我正在调用Nodejs应用程序的API来更新MySQL数据库中的记录。
我在上面定义了一个“更新后触发器”。触发器使用sys_exec调用post Restful API,以将更新的记录的ID传递给另一个API。然后,另一个API获取记录,并根据更新后的值将新记录插入同一数据库的另一个表中。
但是实际发生的是:首先第二个API根据记录的旧值插入新记录,然后旧值更新新值。
据我所知,“更新后触发”保证在更新当前记录后开始执行触发。 请提供任何建议或帮助。
答案 0 :(得分:1)
更新后触发器在记录更新后但在提交事务之前运行。
通过从触发器调用另一个api,第二次插入很有可能在不同的事务中运行。除非将isolation level更改为read uncommitted
,否则第二个事务只能读取已提交的记录,因此记录的值不变。
我将从触发器而不是从另一个api进行第二次插入,因为触发器显然可以看到更新后的值。第二个api仍然可以处理当前正在执行的其他操作。
我不建议将隔离级别更改为read uncommitted
-除非您真的知道自己在做什么。它可能会有意想不到的副作用。