【问题标题】:invoking trigger on column update在列更新时调用触发器
【发布时间】:2009-08-12 10:02:46
【问题描述】:

我有一个条件,即每当更新表中的特定列时,都应该调用触发器,而不是在更新任何其他列时。 有可能吗?

【问题讨论】:

    标签: sql-server database triggers


    【解决方案1】:

    无论字段更改如何,都会调用触发器,但是您可以使用

    IF UPDATE(mycol)
    BEGIN
        -- logic goes here
    END
    

    为特定列实现逻辑。

    也可以看看 COLUMNS_UPDATED 函数。

    【讨论】:

    • 由于 SQL Server 触发器是语句级触发器而不是行级触发器,我想知道单个测试 UPDATE(mycol) 如何确定所有行的更新状态。似乎 UPDATE 语句将更新所有受影响行的列或不更新。这是因为如果在 UPDATE 语句中为列分配了值,则认为该列已更新,无论实际列的值是否更改。
    【解决方案2】:

    您的触发器会在任何更新时被调用,但您可以添加一些检查以仅在您的列具有新值时处理数据。

    【讨论】:

      【解决方案3】:

      触发器在 INSERT、UPDATE、DELETE 上只有树选项,这意味着触发器将在每个更新命令上触发,无论更新什么列 最好的问候, 约旦

      【讨论】:

        猜你喜欢
        • 2017-11-13
        • 1970-01-01
        • 2017-11-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多