触发与检查约束

Dav*_*d S 6 postgresql triggers database-design check-constraints postgresql-9.1

我想在表上添加字段级验证.有一个名为"account_number"的字段,该字段应始终通过"luhn"检查.我发现了一个名为"luhn_verify"的功能似乎正常工作(谷歌如果你感兴趣的话).它返回一个布尔值.我的问题是:

在PostgreSQL中使用触发器进行此验证与检查约束是否有任何主要的性能优势.

附加信息:

  • PostgreSQL 9.1
  • Table当前没有插入触发器,但确实有更新.

免责声明:

我觉得这可能已经得到了解答,但我似乎找不到明确的答案.如果是,请标记为重复并参考原始问题/答案.

可能是dba板的更好问题.

Erw*_*ter 11

经验法则是在使用CHECK触发器之前使用约束.

一个CHECK约束是更快,更简单,更方便携带,需要更少的代码,是不容易出错.例如,触发器可以很容易地被其他触发器规避.

触发器要复杂得多.在必要时使用它们,满足更复杂的要求.

如果CHECK约束对您的情况限制太多或导致重新加载转储的麻烦,您可以使用NOT VALID修饰符作为中间地点(第9.2+页).细节: