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

¿Es posible pasar las tablas NUEVAS y ANTIGUAS de un disparador a un procedimiento en MySQL?

Puede pasar explícitamente cada campo:

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

O si logChanges debe ser lo suficientemente genérica para que pueda manejar este tipo de llamadas desde diferentes tablas, uno podría concatenar los valores de campo en una sola cadena usando un delimitador adecuado (por ejemplo, el separador de unidades ):

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

O si se deben conservar los tipos de datos, se podrían insertar los registros en un registro temporal desde el cual logChanges lee.