MySql更新后触发执行顺序

时间:2018-07-17 22:43:21

标签: mysql node.js rest triggers

我正在调用Nodejs应用程序的API来更新MySQL数据库中的记录。

我在上面定义了一个“更新后触发器”。触发器使用sys_exec调用post Restful API,以将更新的记录的ID传递给另一个API。然后,另一个API获取记录,并根据更新后的值将新记录插入同一数据库的另一个表中。

但是实际发生的是:首先第二个API根据记录的旧值插入新记录,然后旧值更新新值。

据我所知,“更新后触发”保证在更新当前记录后开始执行触发。 请提供任何建议或帮助。

1 个答案:

答案 0 :(得分:1)

更新后触发器在记录更新后但在提交事务之前运行。

通过从触发器调用另一个api,第二次插入很有可能在不同的事务中运行。除非将isolation level更改为read uncommitted,否则第二个事务只能读取已提交的记录,因此记录的值不变。

我将从触发器而不是从另一个api进行第二次插入,因为触发器显然可以看到更新后的值。第二个api仍然可以处理当前正在执行的其他操作。

我不建议将隔离级别更改为read uncommitted-除非您真的知道自己在做什么。它可能会有意想不到的副作用。