代码之家  ›  专栏  ›  技术社区  ›  Srikar Doddi

数据库触发器什么时候坏?[复制品]

  •  11
  • Srikar Doddi  · 技术社区  · 15 年前

    可能重复:
    Are database triggers evil?

    有很多关于数据库触发器的负面信息,只是想让社区了解什么时候是好是坏。

    4 回复  |  直到 15 年前
        1
  •  11
  •   Paul Sasik    15 年前

    我认为,当它们被用来填充一组单独的、一次性的表,用于诸如日志记录、聚合等安全性或创建元数据时,它们是可以的。

    当你开始改变你的“实时”数据或“循环回”到你的商业信息表,那是当他们变得邪恶和笨拙。他们也完全没有必要这样做。触发器执行的任何操作都不是存储过程所不能执行的。

    我觉得在编程语言中,它们是SQL的邪恶等价物。合法,但除非绝对必要,否则应避免,而且绝对不必要。

        2
  •  7
  •   Cade Roux    15 年前

    当其他特性更合适时,使用数据库触发器是不好的。

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

    检查约束

    外键约束

    唯一索引/约束

    (持久)计算列

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

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

    在这之后,可以适当地使用触发器,而不必“坏”。触发器的设计应始终具有较小的占用空间。

        3
  •  5
  •   Mike M.    15 年前

    因为它们是“魔法”。它们不太明显,可以做很多工作。

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

        4
  •  2
  •   Community Mohan Dere    8 年前

    这里有几篇文章可以帮助你自己解决你的需求。

    1. Pros and Cons of Triggers vs. Stored Procedures for Denormalization (所以问题);
    2. Choice Between Stored Procedures, Functions, Views, Triggers, Inline SQL .

    简而言之, Triggers 当必须进行复杂的DML时,可用于处理大量数据。要回答你的问题,如果不是这样的话,你的答案是根据什么时候触发是坏的。