更新某些元组时运行的触发器

时间:2017-08-04 21:21:58

标签: sql-server triggers

我正在尝试创建一个触发器,当EquipmentStatKey从某个东西更改为设置值时更新或连接变量,并在EquipmentStatKey和UserDef2都发生更改时更改值。

我对SQL很新,不知道我做错了什么。它给我的错误代码是SQL80001和SQL46010,但我认为可能还有一些语法/逻辑错误。

{{1}}

1 个答案:

答案 0 :(得分:0)

假设dbo.Equipment有一个PK的主键,我想你正在寻找这样的东西:

IF EXISTS
(
    SELECT *
    FROM sys.triggers
    WHERE name = 'equipStatTrig'
)
BEGIN
    EXEC('DROP TRIGGER dbo.equipStatTrig')
END
GO

CREATE TRIGGER dbo.equipStatTrig On dbo.Equipment
AFTER UPDATE
AS
BEGIN
    UPDATE realTable
    SET lastEquipmentStatKeyChangeDate = GETUTCDATE()
    FROM 
        dbo.Equipment realTable
        JOIN inserted ins
            ON ins.PK = realTable.PK
            AND ins.EquipmentStatKey <> realTable.EquipmentStatKey
END
GO

您可能需要一种方法来处理NULL的EquipmentStatKey,因为EquipmentStatKey <> NULL将返回不为真,除非ANSI_NULLS为OFF。