3

Oracle SQLチェック制約でifロジックを使用する方法はありますか?

これは私の疑似テーブルです:

create table child
(
    name,
    behaviour,
    treat,
);

今私が欲しいのは、もしそのbehaviour子の= 'bad'場合treat != 'lollies'です。

4

4 に答える 4

4

許可されないものを定義するために NOT を使用して表現する方が簡単な場合があります。

CHECK (NOT (behaviour = 'bad' AND treat = 'lollies'))

...これは次と同じ意味です:

CHECK (behaviour != 'bad' OR treat != 'lollies')

他の回答が示しているように、これを間違えるのは簡単です!

于 2013-05-01T15:12:35.910 に答える
0
ALTER TABLE child 
  ADD CONSTRAINT bad_behaviour_CK 
    CHECK (NOT (behaviour = 'bad' AND treat = 'lollies')) ;

SQLフィドルでテスト

于 2013-05-01T15:11:03.870 に答える