mysql暂时禁用触发器

在 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 模式。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值