一尘不染

如何从mysql5的触发器中的选择查询中获取值?

sql

如何从触发器的选择查询中获取值并将该值插入表中?


阅读 145

收藏
2021-03-17

共1个答案

一尘不染

对于INSERT触发查询,您将使用对象NEW;
对于UPDATE触发查询,您将使用对象OLD;
对于DELETE触发查询,您将使用对象OLD。

示例1:如果您运行INSERT INTO mytable(num)VALUES(10);
在INSERT触发器中,您将该列引用为NEW.num(10);。

示例2:如果您运行UPDATE mytable SET num = 41 WHERE num = 10;
在UPDATE触发器中,您引用OLD.num(10)和NEW.num(41)

示例3:如果您运行DELETE mytable num = 104;
在DELETE触发器中,您引用OLD.num(104)

使用这样的东西:

DELIMITER $$

create trigger my_trigger
AFTER UPDATE on my_update_table
for each row
begin

    DECLARE P1,P2 VARCHAR(50);

    SELECT PRICENAME INTO P1 FROM PRICEIES WHERE PRICEID=OLD.PRICEID;
    SELECT PRICENAME INTO P2 FROM PRICEIES WHERE PRICEID=NEW.PRICEID;
    INSERT INTO AUDITLOG(OLDVALUE, NEWVALUE) VALUES (P1,P2);

end $$

DELIMITER ;
2021-03-17