PHP脚本是否需要等待MySql触发器完成?

jef*_*usk 2 php mysql triggers federated-table

数据库是MySQL.我希望实现一个触发器,每当新的评级被放置时,它会更新聚合评级表.然后还有一些其他类似的用例,我正在寻找实现触发器.

这些触发器可能正在更新联合表.所以我的问题是: 在php脚本完成之前,插入新评级的php脚本是否需要等待触发器完成?

PS:我理解触发器不是一个好主意放置逻辑,也许我会更好用一些消息,如RabbitMQ.

Bil*_*win 9

触发器是同步的; 产生它们的INSERT/UPDATE/DELETE会阻塞,直到触发器完成执行,包括触发器执行的任何操作(甚至这些操作产生的任何后续触发器).

触发器是原子的.也就是说,如果触发器执行的任何更改失败,则触发器将失败,并且还会取消产生触发器的更改.

触发器还会对产生触发器的同一事务的范围进行更改.因此,触发器所做的更改可以与产生触发器的更改一起提交/回滚.如果在PHP应用程序完成其事务并退出时触发器仍在运行,那么就无法确保它们在该事务中发生.

这适用于BEFORE触发器和AFTER触发器.您的应用会阻止所有触发器完成.