据我所知,如果我们以begin tran / commit tran开始声明,它将完全完成或什么也不做。但是,当我在TSQL代码下面执行时,它会更新第一个表的记录。什么都不做,不提交不回滚。我也试过@@ error<> 0但它也不起作用。请帮帮我。
BEGIN TRAN
UPDATE A SET NAME ='ABC' WHERE ID=2
INSERT INTO TTT VALUES('GJ')
COMMIT TRAN
TABLE TTT DOES NOT EXIST.
我已使用此表在此代码块中抛出错误。
答案 0 :(得分:2)
您的理解部分正确,部分不正确。
事务在提交或回滚之前保持打开状态。您可以手动提交或回滚(COMMIT
或ROLLBACK
),并且在某些情况下会自动回滚事务。您没有手动回滚,也没有任何强制在您的特定系统上强制自动回滚。
对于像您这样的代码,SET XACT_ABORT ON
选项很有用:这会导致错误自动回滚当前事务。