关于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

基本上,您要使用交易来制作原子操作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top