sql-server – 与事务组合触发

前端之家收集整理的这篇文章主要介绍了sql-server – 与事务组合触发前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我们有以下情况:

我们有一个表(比如Table_A),它在INSERT上有一个触发器.触发器作业是根据table_A中插入的值更新table_B中的某些行.

现在,当我们在表中简单地插入一行时,一切正常,但是我们通过事务插入数据的情况呢?触发器是否会等到所有事务语句成功运行,否则它会在识别插入时被触发?如果触发器在识别出第一个插入时立即触发,那么如果事务在最后一行失败会发生什么?这种情况有没有机制?

解决方法@H_404_8@
插入始终在事务中.

如果您没有明确的BEGIN TRAN … COMMIT或SET IMPLICIT_TRANSACTIONS ON,则该语句将作为自包含的auto commit transaction运行.

触发器始终是触发触发器的操作的事务的一部分.如果触发器中发生导致事务回滚的错误,则触发操作也将回滚.

触发器隐式具有XACT_ABORT.此设置启用时出错将自动导致事务回滚(使用RAISERROR语句在代码中引发的错误除外).

猜你在找的MsSQL相关文章