Me pregunto si es posible actualizar una definición de disparador en MySQL. Por ejemplo, tengo un disparador T y quiero agregarle alguna funcionalidad nueva.
Mi suposición es que necesito soltarlo y recrearlo.
¿Cuáles son las mejores prácticas en la administración de la base de datos para tales escenarios?
Respuestas:
Parece que está preguntando si es posible alterar un disparador en una operación atómica, donde, si la nueva definición falla, no pierde la anterior ... similar a
CREATE OR REPLACE VIEW
, que reemplaza la definición de vista si la nueva definición es válido, pero deja el antiguo en su lugar, si no puede reemplazarlo.Lamentablemente, no hay
ALTER TRIGGER
oCREATE OR REPLACE TRIGGER
en MySQL.Sugeriría que la mejor práctica es bloquear la mesa donde vive el gatillo, de modo que no haya filas afectadas con el gatillo ausente. Se permite colocar y agregar disparadores mientras una tabla está bloqueada.
Actualización: MariaDB, en la versión 10.1.4, agregó soporte
CREATE OR REPLACE TRIGGER
a su reemplazo directo para MySQL.https://mariadb.com/kb/en/mariadb/create-trigger/
MySQL de Oracle a partir de 5.7 todavía se basa en la solución anterior.
fuente