开始Tran混乱并提交Tran

时间:2014-05-26 06:35:49

标签: sql sql-server tsql

据我所知,如果我们以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.

我已使用此表在此代码块中抛出错误。

1 个答案:

答案 0 :(得分:2)

您的理解部分正确,部分不正确。

事务在提交或回滚之前保持打开状态。您可以手动提交或回滚(COMMITROLLBACK),并且在某些情况下会自动回滚事务。您没有手动回滚,也没有任何强制在您的特定系统上强制自动回滚。

对于像您这样的代码,SET XACT_ABORT ON选项很有用:这会导致错误自动回滚当前事务。