ALTER TRIGGER 'trigger_name_afterupdate'
ON [*db*].[*table*]
AFTER UPDATE
AS
BEGIN
UPDATE [*db*].[*table*]
SET last_updated_by = SYSTEM_USER
**(your flip switch condition goes here)**
FROM *db*.*table* x
WHERE EXISTS (SELECT 1 FROM inserted i WHERE i.id = x.id);
END
在一个 INSERT FOR EACH ROW 触发 new 引用插入的行。没有删除的行,所以 old 是没用的。 反过来,当触发动作是 DELETE . 那么 old 引用删除的行和 new ,在没有插入行的情况下是无用的。 如果行动是 UPDATE 两者 old 以及 new 引用一行。 old 引用更改前的行,然后 new 之后。 所以你要么 old.desired_id 或者 new.desired_id 根据您想要的版本,更改前的版本或更改后的版本。
2条答案
按热度按时间q35jwt9p1#
根据您的问题,您可以通过以下模板查询来实现。需要根据您的架构进行更改。使用触发器中可用的表,触发器将内容更新到表中。
vkc1a9a22#
在一个
INSERT
FOR EACH ROW
触发new
引用插入的行。没有删除的行,所以old
是没用的。反过来,当触发动作是
DELETE
. 那么old
引用删除的行和new
,在没有插入行的情况下是无用的。如果行动是
UPDATE
两者old
以及new
引用一行。old
引用更改前的行,然后new
之后。所以你要么
old.desired_id
或者new.desired_id
根据您想要的版本,更改前的版本或更改后的版本。