MySQL desactivar todos los disparadores
Para probar la corrección de la consulta necesito desactivar todos los disparadores en la base de datos. Veo que en information_schema existen DESENCADENADORES de tabla. ¿Es posible desactivar temporalmente todos los disparadores usando esta tabla? Por ejemplo:
update TRIGGERS set TRIGGERS_SCHEMA='myschema_new'
where TRIGGERS_SCHEMA='myschema'
Y después de finalizar todas las pruebas devuelve todos los disparadores como:
update TRIGGERS set TRIGGERS_SCHEMA='myschema'
where TRIGGERS_SCHEMA='myschema_new'
Puede ser esto puede corromper db o después de disparadores no funciona? No lo encontré en la documentación.
2 answers
No puedes deshabilitar los disparadores directamente y no recomendaría hacer lo que estás sugiriendo, pero podrías hacer que tu disparador verifique si una variable (en mi ejemplo a continuación @disable_triggers
) es NULL
antes de ejecutar el contenido del disparador. Por ejemplo:
Consulta:
SET @disable_triggers = 1;
// Your update statement goes here.
SET @disable_triggers = NULL;
Desencadenantes:
IF @disable_triggers IS NULL THEN
// Do something use as the trigger isn't disabled.
END IF;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-06-25 19:44:49
No es posible 'desactivar' los disparadores en mysql, sin embargo, un truco que se puede utilizar para evitar esto
Agregue una condición en sus disparadores como:
if (DISABLE_TRIGER <> 1 ) then
#trigger body
end if;
Y que si desea desactivar los disparadores en la importación solo:
SET @DISABLE_TRIGER = 1;
Do importaciones
SET @DISABLE_TRIGER = 0;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-06-25 19:46:28