【问题标题】:Will one trigger activate another trigger in SQL Server?一个触发器会激活 SQL Server 中的另一个触发器吗?
【发布时间】:2016-05-05 16:11:25
【问题描述】:

共有三个表ABC和两个触发器ab

  • 当表A更新时,触发器a将被激活并更新表B
  • 当表B更新时,触发器b将被激活并更新表C

当我更新表A时,表C会更新吗?

如果没有,怎么办?

【问题讨论】:

  • 是的,C 应该更新了。
  • Nested Triggers。而且 StevieG 说的没错,你的 C 表应该更新了。
  • 你尝试的时候发生了什么?
  • 我会详细说明我的问题。当我在A 中插入一条记录时,A 会被触发器更新。确实如此!然后B 应该由触发器a 更新。但事实并非如此。
  • 是的,您的触发器将按您的预期触发。然而,根据我的经验,这是一个糟糕的设计,会给那些必须维护此代码的人带来很大的困难。我强烈建议您不要这样做;相反,创建一个过程来根据需要更新表 A、B 和 C 并调用此过程,而不是指望嵌套触发器按您期望的顺序触发。

标签: sql sql-server tsql triggers


【解决方案1】:

DML 触发器最多可以嵌套 32 层,但可以在服务器层关闭。因此,如果表 B 和 C 的更新很重要,那么您需要确保永远不会关闭此设置,这在应用程序的生命周期内可能难以确保。

参见 MSDN > 创建嵌套触发器:https://msdn.microsoft.com/en-GB/library/ms190739.aspx

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-30
    • 2016-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多