我想在插入某些表后创建通知.例如,每当用户插入注释时,我都会为管理员创建一个通知,告知该用户已创建注释.
我以前在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缺乏这种能力.你必须使用变通方法.
底线:除非必须,否则请考虑不要使用触发器.