了解SQL错误处理脚本

Ray*_*Ray 3 t-sql sql-server error-handling

我是SQL的新手,我正在尝试理解以下脚本.有人可以为我打破这个吗?

ErrorHandler:   
IF @@ERROR <> 0
BEGIN
ROLLBACK TRANSACTION
RAISERROR('Error occurred in script to update version: transaction rolled back', 182, 4)
END
ELSE
COMMIT
Run Code Online (Sandbox Code Playgroud)

我对Java有所了解,所以我理解循环.这是我需要帮助的SQL语法.

  1. 例如,double @符号代表什么?
  2. ROLLBACK TRANSACTION - 这些是SQL保留的关键字?
  3. ELSE COMMIT是什么意思?

谢谢你,雷

Mar*_*c B 5

  1. @@表示服务器端变量.将它们视为$var客户端脚本中的SQL等价物.
  2. ROLLBACK表示当错误发生时,DB服务器应该"撤消"当前事务 - 基本上丢弃在错误发生之前执行的任何更改.例如,在银行交易中,您将资金从帐户#1转移到帐户#2,如果存款出现问题导致#2,您"撤销"退出#1,因此资金不会因为错误而消失.
  3. ELSE COMMIT只是意味着"做到这一点".

在伪代码中:

if (something went wrong) {
   undo all operations performed since the transaction started;
   send out an error message
} else {
   save the operations and commit them to disk
}
Run Code Online (Sandbox Code Playgroud)