在AFTER DELETE
和AFTER INSERT
触发器中,您可以使用OLD.desired_id
和NEW.desired_id
引用新删除/插入的行。但是,如何在AFTER UPDATE
触发器中引用该行?例如,当我在行中翻转开关后,我需要从刚翻转过布尔值的行中获取ID,例如THIS.desired_id
之类的东西?
答案 0 :(得分:1)
根据您的问题,可以通过以下模板查询来实现。根据您的架构进行必要的更改。使用触发器内部可用的表,该表中的内容已更新为表。
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
答案 1 :(得分:0)
在INSERT
FOR EACH ROW
中,触发器new
引用了插入的行。没有已删除的行,因此old
是没用的。
反之,当触发动作是DELETE
时。然后old
引用已删除的行,而new
则在没有插入行的情况下是没有用的。
如果操作为UPDATE
,则old
和new
都引用一行。 old
引用更改之前的行,new
引用更改后的行。
因此,您可以根据需要的版本使用old.desired_id
或new.desired_id
,即更改前的版本或更改后的版本。