【问题标题】:SQL Server - Update other table only if column values change [closed]SQL Server - 仅在列值更改时更新其他表[关闭]
【发布时间】:2020-07-21 19:26:28
【问题描述】:
我有数据从外部程序流式传输到我的 SQL Server 数据库中的 TABLE1。假设 TABLE1 由列 data1 和 data2 组成。当 TABLE1 中的值发生更改时,如何更新到另一个表 (TABLE2)?
举个例子,假设 data1 列中的值发生了变化。
注意:我写了一个可以工作的触发器,但这只是基于手动更新。我不知道如何自动执行此操作,这意味着触发器将自行比较表中的新旧值,然后在值不同时执行更新。
【问题讨论】:
标签:
sql-server
triggers
sql-update
【解决方案1】:
类似下面的东西会起作用,
CREATE TRIGGER after_update_table1
AFTER UPDATE ON table1
FOR EACH ROW
BEGIN
IF OLD.val1<> new.val1 THEN
/**
-- do operations on table2
**/
END IF;
END;
-- 如果 val1 允许 null,我们需要通过向 if 子句添加更多条件来检查,例如,
IF((OLD.val1 IS NULL AND NEW.val1 IS NOT NULL) OR (OLD.val1 IS NOT NULL AND NEW.val1 IS NULL) OR (OLD.val1<>NEW.val1)) THEN
/**
-- operations on table2
**/
END IF;