Mysql
 sql >> Database >  >> RDS >> Mysql

È possibile passare le tabelle NEW e OLD da un trigger a una procedura in MySQL?

Puoi passare esplicitamente ogni campo:

CALL logChanges(OLD.colA, OLD.colB, NEW.colA, NEW.colB);

O se logChanges deve essere sufficientemente generico da poter gestire tali chiamate da tabelle diverse, è possibile concatenare i valori dei campi in un'unica stringa utilizzando un delimitatore appropriato (ad esempio il separatore di unità ):

CALL logChanges(CONCAT_WS(CHAR(31), OLD.colA, old.colB),
                CONCAT_WS(CHAR(31), NEW.colA, NEW.colB));

Oppure se i tipi di dati devono essere conservati, si potrebbero inserire i record in un temporaneo da cui logChanges legge.