我想在表上添加字段级验证。有一个名为“帐号”的字段,该字段应始终通过“luhn”检查。我发现了一个名为“luhn_verify”的函数,它似乎工作正常(如果您感兴趣,可以用google搜索它)。它返回一个布尔值。我的问题是:
在PostgreSQL中,使用触发器进行验证与使用检查约束相比,有什么主要的性能优势吗。
其他信息:
PostgreSQL 9.1版
表当前没有插入触发器,但有更新。
免责声明:
我觉得这个问题可能已经得到了答案,但我似乎找不到明确的答案。如果是,请标记为副本并参考原始问题/答案。
对dba委员会来说可能是个更好的问题。

最佳答案

经验法则是在使用触发器之前使用CHECK约束。
A CHECK constraint更快、更简单、更便于移植、需要的代码更少、更不易出错。例如,触发器很容易被其他触发器规避。
Triggers are much more complicated。必要时使用它们,以满足更复杂的需求。
如果CHECK约束对您的情况限制过多或导致重新加载转储时出现问题,您可以使用NOT VALID修饰符作为中间点(第9.2+页)。细节:
Disable all constraints and table checks while restoring a dump

08-08 00:17
查看更多