2017-12-02 7 views
1

私はpostgresqlで条件付きチェック制約を作成しようとしています。 a_typeが 'a'のときは、bには数字だけが含まれます。 a_typeが 'a'でなければ、bに任意の文字を入れたい。どうすればこれを達成できますか?私は今これを持っています:PostgreSQLとRegexの条件付きチェック制約

編集: これは動作するはずです。

CONSTRAINT test CHECK (a_type <> 'a' AND b ~* '^.$') OR (a_type = 'a' AND b ~* '^[0-9]+$') 

答えて

1

あなたは正規表現を使用する必要はありませんときa_type <> 'a'

check (a_type <> 'a' or a_type = 'a' and b ~* '^[0-9]+$')