MySQL禁用所有触发器

use*_*430 23 mysql triggers information-schema

为了测试查询的正确性,我需要在db中禁用所有触发器.我看到在information_schema中存在表TRIGGERS.可以暂时禁用使用此表的所有触发器吗?例如:

update TRIGGERS set TRIGGERS_SCHEMA='myschema_new' 
where TRIGGERS_SCHEMA='myschema'
Run Code Online (Sandbox Code Playgroud)

完成所有测试后返回所有触发器,如:

update TRIGGERS set TRIGGERS_SCHEMA='myschema'
where TRIGGERS_SCHEMA='myschema_new'
Run Code Online (Sandbox Code Playgroud)

可能是这个可以破坏数据库或后触发器不起作用?我没有在文档中找到它.

Fra*_*nes 32

您不能直接禁用触发器,我不建议您执行您所建议的操作但是您可以在执行触发器内容之前检查变量(在我的示例中@disable_triggers)是否存在 NULL.例如:

查询:

SET @disable_triggers = 1;
// Your update statement goes here.
SET @disable_triggers = NULL;
Run Code Online (Sandbox Code Playgroud)

触发器:

IF @disable_triggers IS NULL THEN
    // Do something use as the trigger isn't disabled.
END IF;
Run Code Online (Sandbox Code Playgroud)

  • 我有近1000个触发器 - 你很难做出你所推荐的事情. (7认同)