数据库触发器什么时候坏?

时间:2010-06-15 19:26:17

标签: sql sql-server database triggers

  

可能重复:
  Are database triggers evil?

关于数据库触发器有很多负面信息,只是想让社区在好的和坏的时候采取行动。

4 个答案:

答案 0 :(得分:11)

我认为当他们习惯于为安全性或创建元数据等日志记录,聚合等内容填充一个单独的一次性表时,他们就可以了。

当您开始更改“实时”数据或“循环”到您的商业信息表时,那就是当它们变得邪恶和笨拙时。他们也完全没必要。存储过程无法执行任何触发操作。

我觉得他们在编程语言中是SQL的邪恶等同于GOTO。合法,但除非绝对必要,否则要避免,并且绝对没有必要。

答案 1 :(得分:7)

当其他功能更合适时,使用数据库触发器时会很糟糕。

在尝试使用触发器之前应考虑的功能:

检查约束

外键约束

唯一索引/约束

(持久)计算列

(索引)视图(如果触发器正在尝试更新聚合,比如说)

存储过程(如果可以禁止直接访问表)

在那之后,可以适当地使用触发器而不会“坏”。应始终将触发器设计为占用空间小。

答案 2 :(得分:5)

因为它们是“神奇的”。他们不是很明显,他们可以做很多工作。

我看到优秀的开发人员花了很多时间来追踪触发相关的问题,因为他们只是不想去寻找它们。而且,他们很少需要。

答案 3 :(得分:2)

以下是一些文章,可以帮助您自己找出满足您需求的文章。

  1. Pros and Cons of Triggers vs. Stored Procedures for Denormalization(问题);
  2. Choice Between Stored Procedures, Functions, Views, Triggers, Inline SQL
  3. 简而言之,Triggers对于处理大量数据非常有用,因为必须进行复杂的DML。要回答你的问题,如果情况并非如此,你可以根据触发器的不良情况得到答案。