Mysql触发性能vs php手动插入

我想在插入某些表后创建通知.例如,每当用户插入注释时,我都会为管理员创建一个通知,告知该用户已创建注释.

我以前在PHP中手动执行它,它没有那么糟糕,它是这样的:

// after the comment is created
Notification::create(....);

不错,但有时候我会让用户能够添加图片,帖子,等等.所以我必须记住每次插入通知.

所以我正在考虑使用mysql触发器.但我担心这会影响性能?

最后一件事,是否可以在插入多个表后创建触发器?

谢谢,

解决方法:

Is it possible to create a trigger after insert on multiple tables?

不,这是不可能的.您必须为每个表创建单独的触发器.

I am worry how that will affect the performance?

性能方面它不应该是一场灾难,尽管通过引入触发器,您可以人为地延长对表(图像,帖子……)的插入/更新操作,从而有效地增加锁定时间.

但性能不是唯一要考虑的因素.可维护性也应该是重要的.通过创建触发器,可以在应用程序和数据库之间分散应用程序逻辑.测试起来比较困难.触发器经常被遗忘,例如转移架构或生成转储时.有时您不希望它们在您对表执行某些维护DML时触发.但MySQL缺乏这种能力.你必须使用变通方法.

底线:除非必须,否则请考虑不要使用触发器.

上一篇:mysql – 触发器是异步的吗?


下一篇:xen虚拟化部署遇到的问题