当前位置: 首页 > 面试题库 >

MySQL禁用所有触发器

洪开济
2023-03-14
问题内容

为了测试查询的正确性,我需要禁用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'

可能这可能会损坏db或在触发后将不起作用?我没有在文档中找到它。


问题答案:

您不能直接禁用触发器,我也不建议您做您建议的事情,但是您可以让触发器检查变量(在下面的示例中@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;


 类似资料:
  • 本文向大家介绍如何列出MySQL数据库中的所有触发器?,包括了如何列出MySQL数据库中的所有触发器?的使用技巧和注意事项,需要的朋友参考一下 要列出MySQL数据库中的所有触发器,可以使用SHOW命令。查询如下- 以下是输出- 您可以在以下查询的帮助下访问information_schema表。 注意-您必须具有MySQL 5.0.10及更高版本。我目前正在使用MySQL版本8.0.12- 以下

  • 问题内容: 我有一张桌子: 我会记录将任何机会记录到field1、2或3上: 我正在使用MySQL 5,我想创建一个触发器来做。我想在data_table更新时随时向data_tracking中插入新行,并记录旧的/更新的值以及更改的字段。我尝试了以下方法,但没有成功。 它在插入行上给出了错误,我不太确定该使用什么语法,或者我是否正以正确的方式进行操作。任何帮助,将不胜感激。谢谢。 问题答案: 插

  • 我试图从DynamoDB表中设置ElasticSearch导入过程。我已经创建了AWS Lambda并启用了带有触发器的DynamoDB流,该触发器为每个添加/更新的记录调用我的Lambda。现在我想执行初始种子操作(将DynamoDB表中当前的所有记录导入ElasticSearch)。我该怎么做?有没有办法让表中的所有记录都“重新处理”并添加到流中(这样我的lambda就可以处理它们)?还是最好

  • 本文向大家介绍MySQL触发器 Update触发Insert失败,包括了MySQL触发器 Update触发Insert失败的使用技巧和注意事项,需要的朋友参考一下 今天工作需要,想要实现将仅对状态更新的表进行历史记录显示,于是考虑在原表中建立触发器,将更新的内容同时写入另一张表 于是进行测试 执行触发器语句,报错,报错内容如下: 分析,由于访问工具HediSQL,导致无法正常创建触发器,相同语句,

  • 本文向大家介绍MySQL触发器使用详解,包括了MySQL触发器使用详解的使用技巧和注意事项,需要的朋友参考一下 MySQL包含对触发器的支持。触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用该对象,即表的操作事件触发表上的触发器的执行。 创建触发器 在MySQL中,创建触发器语法如下: 其中: trigger_name:标识触发器名称,用户自行指定; trigger_t

  • 问题内容: 有什么方法可以使用C#以编程方式启用或禁用SQL SERVER触发器,还是我必须修改触发器本身以控制我的代码是否调用它? 问题答案: 通过SqlCommand执行DISABLE TRIGGER