経験則では、CHECKを使用します 可能な場合は制約。
CHECK 制約は、より速く、より単純で、より移植性が高く、必要なコードが少なく、エラーが発生しにくいです。たとえば、トリガーは他のトリガーによって簡単に回避できます。
TRIGGER より複雑です。 必要があるときに使用します 、より複雑な要件の場合。
CHECKの場合 制約が制限的すぎる場合や、ダンプの再読み込みで問題が発生する場合は、NOT VALIDを使用できます。 中間点としての修飾子(Postgres 9.2 +)。そして、オプションで、VALIDATE 後で。参照:
- ダンプの復元中にすべての制約とテーブルチェックを無効にします