修改MySQL触发器的正确方法是什么?

尼古拉·迪米特洛夫(Nikolay Dimitrov)

您可能知道,没有语法可以修改MySQL触发器。

为此,您需要执行DROP TRIGGER,然后使用新定义再次重新创建它。

考虑以下因素,什么是正确/最佳方法?

  • 您不能将这两个语句封装在事务中,因为这将毫无意义(DROP TRIGGER和CREATE TRIGGER都调用隐式事务)
  • 您不能使用LOCK TABLES READ作为触发错误
  • 在您的DROP和CREATE TRIGGER之间,某些其他会话可能会插入/更新/删除行,无论新触发器还是旧触发器都不会处理该行。
尼古拉·迪米特洛夫(Nikolay Dimitrov)

在发布之前进行测试时,我忽略了我要获取的LOCK类型,它是READ。

因此,似乎使用WRITE锁可以完成此工作:

delimiter $$

LOCK TABLES table1 WRITE $$

DROP TRIGGER IF EXISTS after_insert_on_table1 $$

CREATE TRIGGER after_insert_on_table1 AFTER INSERT ON table1
FOR EACH ROW
    BEGIN
        ...
    END
$$

UNLOCK TABLES $$

delimiter ;

因此,我的建议是在更新/修改触发器时始终使用此序列。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在MySQL中从其自身的触发器修改表-PhpMyAdmin

来自分类Dev

MySQL触发器在插入之前修改col

来自分类Dev

flink ReduceFunction 的默认触发器是什么?

来自分类Dev

此触发器的MySQL语法正确吗?

来自分类Dev

MySQL触发器为插入的行选择正确的值

来自分类Dev

在不修改功能的情况下,从装饰器调用方法的正确方法是什么?

来自分类Dev

为什么无法保存mySQL触发器?

来自分类Dev

我的 mysql 触发器有什么可怕的失败?

来自分类Dev

在Access数据库(mdb文件)中使用Jet表时,触发器的替代方法是什么?

来自分类Dev

创建最后修改的SQL触发器

来自分类Dev

MYSQL GUID触发器

来自分类Dev

MySQL触发器更新

来自分类Dev

MySQL的触发器问题

来自分类Dev

MYSQL多个触发器

来自分类Dev

如何正确编写SQL触发器

来自分类Dev

通过其DOM对象修改控件的正确方法是什么?

来自分类Dev

持续修改bash终端的正确方法是什么?

来自分类Dev

从触发器中修改子控件,还是通过更好的方法来更改其前景?

来自分类Dev

所有Android Init语言“触发器”的列表是什么?

来自分类Dev

BINSORE INSERT触发器中INSERT的丢失列的值是什么?

来自分类Dev

SQL Server触发器:INSERTED和DELETED不存在。它是什么?

来自分类Dev

这个触发器有什么问题(为了在 '' 附近使用正确的语法)

来自分类Dev

Oracle触发器创建-表正在变异;触发器可能无法读取或修改

来自分类Dev

即使一切正确,更新后的MySql触发器也不会更新

来自分类Dev

使用jQuery触发器无法正确触发keydown事件

来自分类Dev

MySQL触发器不保存

来自分类Dev

使用Sequel Pro的MySQL触发器

来自分类Dev

使用MySQL触发器的Web通知

来自分类Dev

MySQL创建触发器语法

Related 相关文章

热门标签

归档