Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

É possível passar as tabelas NEW e OLD de um gatilho para um procedimento no MySQL?


Você pode passar explicitamente cada campo:
CALL logChanges(OLD.colA, OLD.colB, NEW.colA, NEW.colB);

Ou se logChanges deve ser suficientemente genérico para poder lidar com tais chamadas de tabelas diferentes, pode-se concatenar os valores dos campos em uma única string usando um delimitador adequado (por exemplo, o separador de unidade ):
CALL logChanges(CONCAT_WS(CHAR(31), OLD.colA, old.colB),
                CONCAT_WS(CHAR(31), NEW.colA, NEW.colB));

Ou se os tipos de dados devem ser preservados, pode-se inserir os registros em um temporário do qual logChanges lê.