I want to add a field-level validation on a table. There is a field named \"account_number\" and this field should always pass a \"luhn\" check. I\'ve found a function cal
The rule of thumb is to use CHECK
constraint before you resort to triggers.
A CHECK constraint is faster, simpler, more portable, needs less code and is less error prone. Triggers can easily be circumvented by other triggers, for instance.
Triggers are much more complicated. Use them when you have to, for more complex requirements.
If a CHECK
constraint is too restrictive for your case or causes trouble reloading a dump, you could use the NOT VALID
modifier as middle ground (pg 9.2+). Details: