mysql更新后触发执行顺序

soat7uwm  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(350)

我正在调用nodejs应用程序的api来更新mysql数据库中的记录。
我在上面定义了一个“更新后触发器”。触发器使用sys\u exec调用post restful api,将更新的记录的id传递给另一个api。然后,另一个api获取记录并基于更新后的值,将在同一数据库的另一个表中插入一条新记录。
但实际情况是:首先第二个api根据记录的旧值插入新记录,然后旧值更新新值。
据我所知,“更新后触发器”保证在更新当前记录后开始执行触发器。有什么建议或帮助吗。

x6h2sr28

x6h2sr281#

after update触发器在更新记录之后但在提交事务之前运行。
通过从触发器调用另一个api,第二个insert很可能在不同的事务中运行。除非你把隔离等级改成 read uncommitted ,则第二个事务只能读取已提交的、因此未更改的记录值。
我将从触发器执行第二次插入,而不是从另一个api,因为触发器显然可以看到更新的值。第二个api仍然可以处理它目前正在做的任何事情。
我不建议将隔离级别更改为 read uncommitted -除非你真的知道你在做什么。它会产生意想不到的副作用。

相关问题