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