1
执行ALTER TABLE
命令后,通常需要更新触发器,该触发器基于正在更改的表上插入,更新或删除的数据进行触发。不幸的是,DROP TRIGGER
和CREATE TRIGGER
导致implicit commits,所以不能简单地将这两个命令放在一个事务中,然后提交。更改事务中的MySQL触发器
是否有更新MySQL触发器的方法,以便只要触发器的表中的数据被操纵,触发器的旧版本或新版本就处于活动状态?
执行ALTER TABLE
命令后,通常需要更新触发器,该触发器基于正在更改的表上插入,更新或删除的数据进行触发。不幸的是,DROP TRIGGER
和CREATE TRIGGER
导致implicit commits,所以不能简单地将这两个命令放在一个事务中,然后提交。更改事务中的MySQL触发器
是否有更新MySQL触发器的方法,以便只要触发器的表中的数据被操纵,触发器的旧版本或新版本就处于活动状态?
您可以使用原子锁表修改触发器:
LOCK TABLES `mytable` WRITE;
DELIMITER $$
DROP TRIGGER `mytable_tri` $$
CREATE TRIGGER `mytable_tri` AFTER INSERT ON `mytable`
FOR EACH ROW BEGIN
/* ...... trigger code ......... */
END;
$$
DELIMITER ;
UNLOCK TABLES;
它可以在MySQL 5.6和更高版本。
前段时间我写了一篇博文:http://vkwww.blogspot.com/2014/07/alter-trigger-in-mysql.html