2

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

为此,我编写了一个 UDF,它通过 IPC 通知其他进程。我还在其中一张表上设置了一个 AFTER INSERT 触发器,该触发器调用了 UDF。

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

是否有某种方法可以延迟触发函数的执行,直到行真正全局插入到数据库中(即在 COMMIT 之后)?

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

4

1 回答 1

2

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

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

其他数据库系统(如 Oracle)似乎支持这种行为,但如果您坚持使用 MySQL,则必须手动调用 UDF。

于 2013-04-15T10:12:08.220 回答