Запобігайте «фантомним» зчитуванням лише для окремих рядків
Вам потрібно проаналізувати дані про клієнтів банку з customer_id від 1 до 10. Ви хочете заблокувати тільки ті рядки таблиці customers, у яких customer_id у межах від 1 до 10. Так ви гарантуєте, що ніхто не зможе змінити ці рядки, і водночас дозволяєте іншим транзакціям працювати з рештою таблиці.
Потрібно вибрати цих клієнтів і знову виконати деякі математичні операції. (У цій вправі ми не зосереджуємося на самих операціях.) Після цього ви хочете ще раз вибрати клієнтів із customer_id від 1 до 10 та переконатися, що нічого не змінилося.
Як підготувати скрипт?
Ця вправа є частиною курсу
Транзакції та обробка помилок у SQL Server
Інструкції до вправи
- Встановіть відповідний рівень ізоляції, щоб запобігти «фантомним» зчитуванням.
- Почніть транзакцію.
- Виберіть тих клієнтів, яких потрібно заблокувати.
- Зафіксуйте транзакцію (COMMIT).
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
-- Set the appropriate isolation level
___ ___ ___ ___ ___
-- Begin a transaction
___ ___
-- Select customer_id between 1 and 10
SELECT *
FROM customers
___ customer_id ___ ___ AND ___;
-- After completing some mathematical operation, select customer_id between 1 and 10
SELECT *
FROM customers
___ customer_id ___ ___ AND ___;
-- Commit the transaction
___ ___