【问题标题】:Do triggers get rolled back if a transaction fails in SQL Server?如果 SQL Server 中的事务失败,触发器会回滚吗?
【发布时间】:2012-02-17 20:00:09
【问题描述】:

我在某些表上有一些触发器,它们在删除或更新某些内容时执行一项功能。在事务期间,如果触发器执行后在事务中回滚,那么触发器是否也会回滚?

【问题讨论】:

    标签: sql-server transactions triggers


    【解决方案1】:

    是的。

    只要触发器作为事务的一部分触发,数据库中的任何更改都会回滚。

    Nitpick - 触发器是触发器,它不会被回滚。触发器的效果将是。

    【讨论】:

      【解决方案2】:

      好的,在插入/更新/删除时回滚的真实事务也将回滚触发器执行的任何操作。但是,如果您在事务中执行多个操作,则事务处理必须在您的代码中明确,以便回滚发生在早期操作中。

      因此,如果我从 table1 中删除并且触发器触发,然后事务失败,则一切都会回滚。

      如果我从表 1 中删除并且触发器触发并且我从表 2 中删除作为同一脚本的一部分或从应用程序发送的存储过程或动态 SQL,那么可能会发生两件事。如果您有一个正式的显式事务(正确处理错误),则发生的所有事情(包括触发操作)都会回滚,如果您依赖隐式事务(仅回滚最后一个操作),那么它不会在失败的部分。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多