我应该害怕还是接受数据库触发器?

时间:2015-01-27 03:53:24

标签: mysql triggers

到目前为止,我没有使用过数据库(MariaDB / MySQL)触发器。我也避免使用外键。

这种恐惧基于:

  1. 如果我忘记添加触发器以使表格有意义
  2. ,该怎么办?
  3. 我宁愿手动完成,只需使用RDBMS作为存储和搜索数据的方式
  4. 我可以(有效地)在我的代码中触发一个触发器,只需遵循DRY
  5. 即可

    但是我已经了解到,通常不接受这样的事情我会有更难的时间,所以我来找你(专家),如果我应该通过给你目前的情况来改变。

    情况:

    我有一个“集合”,它作为一个类似java的包来到,例如“com.example.collection”,它有几种类型的东西。

    “one”可能是A类型,因此“com.example.collection.one”是A,

    “两个”可能是B型,依此类推。这些类型是固定的(所以假设我们只有类型A,B,C和D.它们没有添加或类似的东西)。

    每个都存储在自己的表中,其中包含有关特定事物的详细信息。

    一个常见的任务是查找某个包名称可能是什么(例如“什么是com.example.collection.one”)

    我面临使用视图,这将涉及连接,因此优化器不容易优化或者我可以创建索引表并使用触发器使其保持有序。这可以是索引并使查找变得容易。

    所以我的问题是:我在第一次遇到C ++时表现得像个人(他们无法信任内存管理工作,就像我不确定我是否可以信任TRIGGER,即使他们是内部交易) - 我认为答案可能是。

    这是触发器的好用吗?

    最后,触发器的下方是什么,我列出的那些非常弱且可疑,是否有任何真正的理由不使用触发器? (实际上是删除和诸如此类的外键(如果使用它们当然有意义))

1 个答案:

答案 0 :(得分:0)

我认为这个问题可能更适合dba或代码审查。这是一个没有坚实的讨论 - 单一答案。

我落在了直立的另一边而不是你。我花了数百万年(在mysql强制执行外键之前)做RDBMS。我爱他们。

关于你的恐惧,很容易将工具放在一起(或你的组织)。