Mysql触发性能vs php手动插入

时间:2014-01-02 09:52:07

标签: mysql triggers

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

我曾经在PHP中手动完成它,它没有那么糟糕,它是这样的:

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

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

所以我正在考虑使用mysql触发器。但我担心这会对性能产生怎样影响?

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

谢谢,

1 个答案:

答案 0 :(得分:7)

  

在多个表上插入后是否可以创建触发器?

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

  

我担心这会影响性能吗?

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

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

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