【问题标题】:Two triggers on one table sql server一个表sql server上的两个触发器
【发布时间】:2010-07-22 17:39:11
【问题描述】:

我的数据库中的一张表上有两个触发器。一个用于插入触发器,另一个用于更新后触发器。插入触发器将使用值更新表。我的问题是这个;更新触发器是否可能在插入工作的同时触发?

【问题讨论】:

    标签: sql-server triggers


    【解决方案1】:

    FOR INSERT 触发器INSERT 语句上触发。 FOR UPDATE 触发器将UPDATE 语句上触发。当然,如果您的插入触发器执行任何UPDATE 语句,那么它将触发更新触发器,反之亦然。

    UPDATE 触发器不会因为 INSERT 语句而触发(除了上面的 update-within-trigger 情况),但当然您仍然必须针对并发性进行设计,因为可能有两个不同的用户同时运行两个不同的操作 - 一个 INSERT 和一个 UPDATE

    【讨论】:

    • 除了update 语句、merge 语句或通过复制进行后台更新之外,都可以触发for update 触发器
    【解决方案2】:

    如果您的插入触发器对表进行更新,则会调用更新触发器。如果一个触发器触发另一个触发器,则称为“递归触发器”。

    可以为整个服务器禁用递归触发器:

    sp_configure 'nested_triggers', 0
    go
    reconfigure
    

    或者对于一个数据库:

    alter database yourdb set recursive_triggers off
    

    【讨论】:

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