对于查询的测试正确性,我需要禁用db中的所有触发器。 我看到在information_schema中存在表TRIGGERS。 可以暂时禁用使用此表的所有触发器吗? 例如。喜欢:
update TRIGGERS set TRIGGERS_SCHEMA='myschema_new'
where TRIGGERS_SCHEMA='myschema'
并在完成所有测试后返回所有触发器,如:
update TRIGGERS set TRIGGERS_SCHEMA='myschema'
where TRIGGERS_SCHEMA='myschema_new'
可能是这样可以破坏数据库或者触发后不起作用?我没有在文档中找到它。
答案 0 :(得分:32)
你不能直接禁用触发器,我不建议你做什么建议但你可以让你的触发器检查一个变量(在我的@disable_triggers
下面的例子中)是NULL
之前执行触发器的内容。例如:
<强>查询:强>
SET @disable_triggers = 1;
// Your update statement goes here.
SET @disable_triggers = NULL;
<强>触发器:强>
IF @disable_triggers IS NULL THEN
// Do something use as the trigger isn't disabled.
END IF;
答案 1 :(得分:-1)
在mysql中无法“禁用”触发器,但是可以用来解决这个问题的技巧
在触发器中添加条件,如:
if (DISABLE_TRIGER <> 1 ) then
#trigger body
end if;
并且如果你想在导入时禁用触发器:
SET @DISABLE_TRIGER = 1;
做进口
SET @DISABLE_TRIGER = 0;