Коли фіксувати або відкочувати транзакцію
Банк, у якому ви працюєте, вирішив надати 100 \( тим рахункам, на яких менше ніж 5 000 \). Проте директор банку хоче видати ці гроші лише за умови, що рахунків з балансом менше ніж 5 000 $ не більше 200.
Ви готуєте скрипт для нарахування цих 100 \(. Із кількох можливих підходів ви вирішуєте відкрити транзакцію, а потім оновити кожен рахунок із балансом менше ніж 5 000 \). Після цього ви перевіряєте кількість рядків, змінених оновленням, за допомогою функції @@ROWCOUNT. Якщо це число більше ніж 200, ви відкочуєте транзакцію. Інакше — фіксуєте її.
Як підготувати такий скрипт?
Ця вправа є частиною курсу
Транзакції та обробка помилок у SQL Server
Інструкції до вправи
- Розпочніть транзакцію.
- Перевірте, чи кількість змінених рядків більша ніж 200.
- Виконайте відкат транзакції, якщо кількість змінених рядків більша за 200.
- Зафіксуйте транзакцію, якщо кількість змінених рядків менша або дорівнює 200.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
-- Begin the transaction
___ ___;
UPDATE accounts set current_balance = current_balance + 100
WHERE current_balance < 5000;
-- Check number of affected rows
IF @@ROWCOUNT > ___
BEGIN
-- Rollback the transaction
___ ___;
SELECT 'More accounts than expected. Rolling back';
END
ELSE
BEGIN
-- Commit the transaction
___ ___;
SELECT 'Updates commited';
END