CHECK制約は使わない
せいぜい保険の最終防壁
いろいろ理由はあるがDBが返す「CHECK制約xxに違反しました」といったエラー情報をまともなエラーメッセージに変換するのがまず厄介