Oracle SQLチェック制約でifロジックを使用する方法はありますか?
これは私の疑似テーブルです:
create table child
(
name,
behaviour,
treat,
);
今私が欲しいのは、もしそのbehaviour
子の= 'bad'
場合treat != 'lollies'
です。
Oracle SQLチェック制約でifロジックを使用する方法はありますか?
これは私の疑似テーブルです:
create table child
(
name,
behaviour,
treat,
);
今私が欲しいのは、もしそのbehaviour
子の= 'bad'
場合treat != 'lollies'
です。
許可されないものを定義するために NOT を使用して表現する方が簡単な場合があります。
CHECK (NOT (behaviour = 'bad' AND treat = 'lollies'))
...これは次と同じ意味です:
CHECK (behaviour != 'bad' OR treat != 'lollies')
他の回答が示しているように、これを間違えるのは簡単です!
ALTER TABLE child
ADD CONSTRAINT bad_behaviour_CK
CHECK (NOT (behaviour = 'bad' AND treat = 'lollies')) ;
SQLフィドルでテスト