4
私はOracle 10gを使用しています.1つの列に入力された値によって、別の列がNULLであるかIS NOT NULLであるかを決定するテーブルに制約を適用したいとします。 Column1に含めることができるのは1または0のみです。 Column2はVARCHAR2(255)です。この制約を実行するためにCASEを使用するとcol2にNOT NULL属性を設定、またはのみに使用する場合できることが可能である場合はOracle SQL - データ属性を判別するためにチェック制約でCASEを使用できますか?
CONSTRAINT ck_1 CHECK ((col1=1 AND col2 IS NOT NULL) OR (col1=0 AND col2 IS NULL));
、私が思っていた:
は、私は、次の作品があることを知っています値を定義しますか? CASE式が値を返す、と制約を確認する必要がありますので例えば、ブールあり、あなたが何かで結果を比較する必要があります
CONSTRAINT ck_1 CHECK (CASE WHEN col1=1 THEN col2 IS NOT NULL ELSE col2 IS NULL END);