如何在after update触发器中引用最近更新的行

nhaq1z21  于 2021-06-15  发布在  Mysql
关注(0)|答案(2)|浏览(373)

AFTER DELETE 以及 AFTER INSERT 触发器可以使用引用新删除/插入的行 OLD.desired_id 以及 NEW.desired_id . 但是你怎么引用 AFTER UPDATE 触发?例如,在我翻转行中的一个开关之后,我需要从我刚刚翻转布尔值的行中获取一个id,如下所示 THIS.desired_id 或者别的什么?

q35jwt9p

q35jwt9p1#

根据您的问题,您可以通过以下模板查询来实现。需要根据您的架构进行更改。使用触发器中可用的表,触发器将内容更新到表中。

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
vkc1a9a2

vkc1a9a22#

在一个
INSERT FOR EACH ROW 触发 new 引用插入的行。没有删除的行,所以 old 是没用的。
反过来,当触发动作是 DELETE . 那么 old 引用删除的行和 new ,在没有插入行的情况下是无用的。
如果行动是 UPDATE 两者 old 以及 new 引用一行。 old 引用更改前的行,然后 new 之后。
所以你要么 old.desired_id 或者 new.desired_id 根据您想要的版本,更改前的版本或更改后的版本。

相关问题