事务结束后,让MySQL AFTER INSERT触发器触发

时间:2013-04-15 09:28:18

标签: mysql triggers user-defined-functions

我有一个mysql数据库,其中条目被添加到显式事务块中的两个相关表中。当事务成功完成(并且仅在那时)时,应该通知另一个关于新数据的进程。

为实现这一目标,我编写了一个UDF,通过IPC通知其他进程。我还在其中一个表上设置了一个AFTER INSERT触发器,触发器调用了UDF。

我假设,在事务完成并且实际插入行之后触发器将触发。但是,看起来,它在执行INSERT语句后立即执行。

是否有某种方法可以延迟执行触发器函数,直到行实际上实际全局插入到db中(即在COMMIT之后)?

我想,一个解决方法是,在COMMIT之后显式调用UDF,但自动化方法会更好。

1 个答案:

答案 0 :(得分:1)

查看MySQL文档,似乎无法定义在提交事务后运行的触发器。

我认为理由是触发器通常用于对数据库进行其他更改,因此您几乎总是希望它们在事务内部运行以避免数据完整性问题。

看起来像Oracle这样的其他数据库系统支持这种行为,但是如果你坚持使用MySQL,你将不得不手动调用你的UDF。