Mysql
 sql >> Base de données >  >> RDS >> Mysql

Est-il possible de passer les tables NEW et OLD d'un déclencheur dans une procédure dans MySQL ?

Vous pouvez passer explicitement chaque champ :

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

Ou si logChanges doit être suffisamment générique pour pouvoir gérer de tels appels à partir de différentes tables, on pourrait concaténer les valeurs de champ en une seule chaîne en utilisant un délimiteur approprié (par exemple, le séparateur d'unité ):

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

Ou si les types de données doivent être préservés, on peut insérer les enregistrements dans un fichier temporaire à partir duquel logChanges lit.