Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Ist es möglich, die NEW- und die OLD-Tabelle von einem Trigger an eine Prozedur in MySQL zu übergeben?

Sie können jedes Feld explizit übergeben:

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

Oder wenn logChanges ausreichend generisch sein muss, um solche Aufrufe aus verschiedenen Tabellen verarbeiten zu können, könnte man die Feldwerte mit einem geeigneten Trennzeichen zu einem einzigen String verketten (z. B. das Einheitentrennzeichen ):

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

Oder wenn Datentypen erhalten bleiben müssen, könnte man die Datensätze in ein temporäres einfügen, aus dem logChanges liest.