SQL - 仅在特定列已更新时才将数据插入表中的触发器

时间:2016-07-13 12:42:40

标签: sql sql-server tsql triggers

我正在尝试创建一个触发器,只有在特定列已更新(而不是整个表)时才会插入表数据。

例如,我有2个名为tbl.Atbl.A_History的表:

tbl.A 有5列: ID,姓名,地点,年龄,性别

我希望仅在位置或名称已更改时才将更新的行插入历史记录,如果ID,年龄,性别更新,删除,插入,则无需执行任何操作。

此外,我希望能够区分位置和名称。

  • 如果位置已更改,请插入location have been changed

  • 如果更改名称,请插入name have been changed

我尝试了几件事,但没有运气。

2 个答案:

答案 0 :(得分:1)

CREATE TRIGGER trigger_name ON tbl.A
FOR UPDATE
AS
IF ( UPDATE(location) OR UPDATE(name))
BEGIN
--  your sql here
END

答案 1 :(得分:-1)

CREATE TRIGGER Test_Trg_01
ON Test
AFTER Update
AS
BEGIN
  IF update(name)
    INSERT INTO Test_Log SELECT id, 'name updated' AS LogMessage FROM inserted;

  IF update(country)
    INSERT INTO Test_Log SELECT id, 'country updated' AS LogMessage FROM inserted;
END