sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo obtener valor de la consulta de selección en el disparador en mysql5?

Para una consulta INSERT Trigger, usaría el objeto NUEVO
Para una consulta UPDATE Trigger, usaría el objeto OLD y NEW
Para una consulta DELETE Trigger, usaría el objeto OLD

Ejemplo 1:si ejecutó INSERT INTO mytable (num) VALORES (10);
En el activador INSERT, hace referencia a la columna como NEW.num (10);

Ejemplo 2:si ejecutó UPDATE mytable SET num =41 WHERE num =10;
En el activador UPDATE, hace referencia a OLD.num (10) y NEW.num (41)

Ejemplo 3:si ejecutó DELETE mytable num =104;
En el disparador DELETE, hace referencia a OLD.num (104)

Usa algo como esto:

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 ;