如何利用Transact-SQL执行事务

来源:互联网 发布:运维和网络哪个好 编辑:程序博客网 时间:2024/05/01 02:21

如何利用Transact-SQL执行事务

下列存储过程说明了如何在Transact-SQL过程内执行事务的支金转移操作。

CREATE PROCEDURE MoneyTransfer@FromAccount char(20),@ToAccount char(20),@Amount moneyASBEGIN TRANSACTION-- PERFORM DEBIT OPERATIONUPDATE AccountsSET Balance = Balance - @AmountWHERE AccountNumber = @FromAccountIF @@RowCount = 0BEGIN  RAISERROR('Invalid From Account Number', 11, 1)  GOTO ABORTENDDECLARE @Balance moneySELECT @Balance = Balance FROM ACCOUNTSWHERE AccountNumber = @FromAccountIF @BALANCE < 0BEGIN  RAISERROR('Insufficient funds', 11, 1)  GOTO ABORTEND-- PERFORM CREDIT OPERATIONUPDATE Accounts SET Balance = Balance + @Amount WHERE AccountNumber = @ToAccountIF @@RowCount = 0BEGIN  RAISERROR('Invalid To Account Number', 11, 1)  GOTO ABORTENDCOMMIT TRANSACTIONRETURN 0ABORT:  ROLLBACK TRANSACTIONGO

该存储过程使用BEGIN TRANSACTION, COMMIT TRANSACTION,和ROLLBACK TRANSACTION状态手工控制事务。