为什么即使更新语句失败,此SQL Server事务提交仍然存在

时间:2013-04-04 09:09:00

标签: sql transactions

我有这个交易:

BEGIN TRAN;
Update Job set JobTitle = 'wonderfullivin' where JobId = 1271;
Update Job set LastTransactionDate = null where JobId = 1271;
COMMIT;

其中第二个语句必须失败,因为LastTransactionDate设置为NOT NULL。 当我查看事务日志时,我看到事务已提交。 它不应该被中止,因为其中一个查询失败了吗?

1 个答案:

答案 0 :(得分:5)

没有

您需要使用SET XACT_ABORT ON来获取您显然期望的行为或添加一些错误处理,并且只有在没有错误发生时才提交,否则回滚。

SQL Server中的错误可能会中止语句,范围,批处理或连接。

在这种情况下,错误只是中止语句,然后继续执行下一个语句。

有关详情,请参阅Error Handling in SQL 2000