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

En MySQL trigger, ¿es posible configurar una variable de usuario con NEW.col y usarla en la consulta de actualización?

Esto no es posible como se describe con sql dinámico/Declaración preparada. Generaría Error Code: 1336. Dynamic SQL is not allowed in stored function or trigger al intentar incluso CREATE TRIGGER .

Lo más cerca que podría llegar a la automatización es usar CREATE EVENT . Los eventos son programas almacenados programados que se ejecutan en el horario/intervalo de su elección. Los intervalos son:

Podría establecer una "bandera", por así decirlo, en una fila, como la tabla que está representando arriba que tiene el disparador Después de insertar. El evento podría realizar la Declaración preparada dinámicamente y ejecutarlo.

Vea mi respuesta aquí en Gestión de eventos .

He de decir que aunque corra en un evento, lo que propones es casi Siempre la señal de un diseño de esquema deficiente que no resistiría bien la revisión por pares.

Una razón por la cual el sql dinámico y un Stmt preparado no están permitidos es porque el activador debe ser rápido, e incluso DDL podría colarse en la cadena y ejecutarse. Y instrucciones DDL como ALTER TABLE no están permitidos en activadores (pueden tardar horas en ejecutarse literalmente).

Su esquema también podría tener una tabla compartida con una columna ven_code siendo la columna diferenciadora. En su lugar, eligió crear nuevas tablas para cada ven_code . Esa suele ser una mala elección de diseño y rendimiento.

Si necesita ayuda con el diseño del esquema, estaré encantado de hablar con usted en una sala de chat.