关于 MS SQL Server 的更新和插入触发器,有没有办法让它们成为原子的?也就是说,如果在触发过程中发生错误,是否可以自动回滚原来的插入或更新?
recursive
问问题
5664 次
2 回答
4
After 触发器自动成为表上插入/更新/删除原子 DML 语句的一部分。
您只需在触发器中发出 ROLLBACK TRAN 即可回滚触发器中的所有工作和原始 I/U/D 语句。如果有一个,最外层的 tran 也会回滚。
重要的
SQL 2000 和更早版本的触发器中的回滚会中止批处理。在有问题的 I/U/D 之后不会运行任何代码。请参阅 Erland 的精彩文章和另一篇文章
对于带有 TRY/CATCH 的 SQL 2005,执行将转到 CATCH 块,并且您的批处理(也称为存储过程等)将正常退出。
请参阅存储过程和触发器中的回滚和提交。触发器和 TRY/CATCH 交互在这里
于 2009-03-27T20:05:53.080 回答
0
MSDN 中有一篇关于触发器和事务的好文章,位于此处:
http://msdn.microsoft.com/en-us/magazine/cc164032.aspx
基本上,您想使用事务来使操作原子化。
于 2009-03-27T19:36:30.903 回答