gpt4 book ai didi

mysql - 如何在 MySQL 中禁用触发器?

转载 作者:IT老高 更新时间:2023-10-28 23:55:34 25 4
gpt4 key购买 nike

在我的 MySQL 数据库中,我有一些触发器 ON DELETEON INSERT。有时我需要禁用一些触发器,我必须 DROP 例如

DROP TRIGGER IF EXISTS hostgroup_before_insert //   

然后重新安装。 SET triggers hostgroup_before_insert = 0 是否有任何快捷方式,就像我们为外键设置的那样:

mysql> SELECT version();
+-------------------------+
| version() |
+-------------------------+
| 5.1.61-0ubuntu0.10.10.1 |
+-------------------------+
1 row in set (0.00 sec)

编辑回答MySQL 中没有内置的服务器系统变量 TRIGGER_CHECKS
一个简单的解决方法是改用用户定义的 session 变量。

#FALSE value overrides trigger type settings
SET @TRIGGER_CHECKS = [TRUE|FALSE];

SET @TRIGGER_BEFORE_INSERT_CHECKS = [TRUE|FALSE];
SET @TRIGGER_AFTER_INSERT_CHECKS = [TRUE|FALSE];

DELIMITER $$
DROP TRIGGER IF EXISTS `yearCheck_beforeInsert` $$
CREATE DEFINER=`root`@`localhost` TRIGGER `yearCheck_beforeInsert`
BEFORE INSERT ON `movies` FOR EACH ROW

#Patch starts here
thisTrigger: BEGIN
IF ((@TRIGGER_CHECKS = FALSE)
OR (@TRIGGER_BEFORE_INSERT_CHECKS = FALSE))
AND (USER() = 'root@localhost')

这个 TRICK is Explained here .

最佳答案

暂时禁用触发器是不可能的。做一件事,使用一个全局变量。触发器将首先检查全局变量的值。在这种情况下,您可以更改全局变量的值以防止触发器工作。

关于mysql - 如何在 MySQL 中禁用触发器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13598155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com