【问题标题】:Let MySQL AFTER INSERT trigger fire after transaction finishes让 MySQL AFTER INSERT 在事务完成后触发触发
【发布时间】:2013-04-15 09:28:18
【问题描述】:

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

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

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

有没有办法延迟触发器函数的执行,直到行真正全局插入到数据库中(即在 COMMIT 之后)?

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

【问题讨论】:

    标签: mysql triggers user-defined-functions


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢。是的,我必须为这个项目使用 mysql。我明白为什么让触发器在事务中运行通常是个好主意。
    猜你喜欢
    • 1970-01-01
    • 2013-03-29
    • 2017-10-04
    • 1970-01-01
    • 2015-09-18
    • 1970-01-01
    • 2016-01-15
    • 2012-09-24
    • 2017-04-10
    相关资源
    最近更新 更多