MSSQL:当触发执行过程中发生错误时会发生什么?
-
22-08-2019 - |
题
关于MS SQL Server的更新和插入触发器,有没有办法使它们成为原子?换句话说,如果在触发器期间发生错误,是否可以自动回滚原始插入或更新?
解决方案
触发器自动成为表上插入/update/delete aromic dml语句的一部分之后。
您只需在触发器中发出回滚式tran即可在触发器和原始I/U/D语句中回滚所有工作。如果有一个,则最外面的tran也会回滚。
重要的
在SQL 2000和更早的触发器中回滚。犯罪I/U/D之后没有代码运行。 参见Erland伟大的文章 和 其他
对于SQL 2005带有尝试/捕获的情况,执行将转到捕获块,您的批次(又名存储的Proc等)将正常退出。
看 回滚和存储过程和触发器的投资. 。触发器和尝试/捕获的介绍是 这里
其他提示
MSDN中有一篇很好的文章,讨论了触发器和交易,位于这里:
http://msdn.microsoft.com/en-us/magazine/cc164032.aspx
基本上,您要使用交易来制作原子操作。
不隶属于 StackOverflow