在 MySQL 中,没有禁用触发器的全局设置。但是我们可以设置一个全部变量@DISABLE_TRIGGERS,在创建触发器时先判断全部变量@DISABLE_TRIGGERS,如果变量@DISABLE_TRIGGERS值是null时再执行触发器,列如:
CREATE TRIGGER `触发器名字` AFTER UPDATE ON `表名` FOR EACH ROW
begin
IF @DISABLE_TRIGGERS IS NULL THEN
#触发器内容
End IF;
end
你可以使用以下语句来暂时禁用触发器:
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';
SET GLOBAL event_scheduler = OFF;
SET GLOBAL log_bin_trust_function_creators = OFF;
SET @DISABLE_TRIGGERS=1;
这些语句将禁用触发器、事件调度程序和二进制日志功能。具体含义如下:
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';:保存原始的 SQL 模式,并将 SQL 模式设置为 TRADITIONAL 模式。这将禁用一些非标准的 SQL 语法,以提高兼容性和稳定性。
SET GLOBAL event_scheduler = OFF;:禁用事件调度程序。这将停止所有计划的事件,以避免在更新操作期间触发不必要的事件。
SET GLOBAL log_bin_trust_function_creators = OFF;:禁用二进制日志功能。这将停止将任何触发器或函数写入二进制日志,以避免在更新操作期间触发触发器或函数。
SET @DISABLE_TRIGGERS=1;:设置一个用户变量 @DISABLE_TRIGGERS 的值为 1。这将禁用所有触发器,并防止在更新操作期间触发触发器。
在这种情况下,如果你需要启用触发器,请执行以下语句:
SET @DISABLE_TRIGGERS=null;
SET GLOBAL event_scheduler = ON;
SET GLOBAL log_bin_trust_function_creators = ON;
SET SQL_MODE=@OLD_SQL_MODE;
这些语句将再次启用触发器、事件调度程序和二进制日志功能,并恢复以前的 SQL 模式。