НачатьНачать бесплатно

Когда фиксировать транзакцию, а когда выполнять откат

Банк, в котором вы работаете, решил начислить по 100 долларов на счета с балансом менее 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
Редактировать и запускать код