我正在尝试创建一个触发器,当EquipmentStatKey从某个东西更改为设置值时更新或连接变量,并在EquipmentStatKey和UserDef2都发生更改时更改值。
我对SQL很新,不知道我做错了什么。它给我的错误代码是SQL80001和SQL46010,但我认为可能还有一些语法/逻辑错误。
{{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。