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

Sri*_*ddi 11 sql database sql-server triggers

可能重复:
数据库是否触发了恶意?

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

Pau*_*sik 11

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

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

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

  • 谢谢保罗,但你说过它们绝对没有必要!有没有更好的方法来记录更新、从表中删除? (2认同)

Cad*_*oux 7

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

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

检查约束

外键约束

唯一索引/约束

(持久)计算列

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

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

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


Mik*_* M. 5

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

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

  • 这并不意味着触发器是一件坏事,这意味着开发人员没有经过适当的培训. (3认同)
  • @HLGEM,开发者不会(也不可能)知道一切!关键是将代码置于触发器中可以不必要地隐藏它. (3认同)