mysql - SQL 禁用触发器

标签 mysql triggers mariadb

我需要创建一个存储函数来按需禁用触发器。 首先,我有一个参数@disable_triggers,我可以将其设置为“全部”或特定的触发器名称。在触发器中,我将有一个变量,我将其分配给过程返回值,如果它是真的,我不会执行触发器代码。因此,在过程中我需要以某种方式处理具有特定触发器名称的情况。

CREATE PROCEDURE `DisableTriggers`()
BEGIN
IF(@disable_triggers = 'all') THEN
    RETURN 1;
END IF;
IF (@disable_triggers CONTAINS 'Specific trigger name') THEN 
Return true to disable specific trigger. <<-- how to return it here.
END IF;
END

所以我问的问题是如何处理具有特定触发器的情况返回什么。

最佳答案

一般来说,没有办法禁用 MySQL/MariaDB 中的触发器。 您只能删除触发器并稍后重新创建它们,但如果您的环境负载较高,请注意 MDL 锁。

您仍然可以选择使用 session 变量执行一些技巧,例如 MySQL disable all triggers

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

相关文章:

php - 如何根据特定的行值将行转换为列?

php - 获取PDO中的用户ID数据

MYSQL:按不同组查找序列中的缺失值

javascript - Firebase 在所有收藏项上触发,而只有一个已更新

mysql - 如果 INSERT 上未设置字段,则触发器会表现得很奇怪

mysql - 为什么我无法安装mysql2 gem?

php - MySQL 表单的前端(Windows 或 OSX)

mysql - 如何使用触发器使用其他表中的数据更新字段?

mysql - 迁移处理不支持的类型

mysql - 如果不同列中不存在数据,则允许重复记录