有沒有辦法使用,如果邏輯在oracle sql檢查約束?檢查約束與如果邏輯oracle sql
這是我的僞代碼表:
create table child
(
name,
behaviour,
treat,
);
現在我想的是,如果孩子= 'bad'
然後treat != 'lollies'
的behaviour
。
有沒有辦法使用,如果邏輯在oracle sql檢查約束?檢查約束與如果邏輯oracle sql
這是我的僞代碼表:
create table child
(
name,
behaviour,
treat,
);
現在我想的是,如果孩子= 'bad'
然後treat != 'lollies'
的behaviour
。
試試這個
create table children (
childname VARCHAR2(50), behaviour VARCHAR2(50),treats VARCHAR2(50),
constraint behave_treat check (behaviour = 'bad' AND treats != 'lollies')
)
ALTER TABLE child
ADD CONSTRAINT bad_behaviour_CK
CHECK (NOT (behaviour = 'bad' AND treat = 'lollies')) ;
Tesed在SQL-Fiddle
有時更容易使用NOT定義什麼是不允許的表達:
CHECK (NOT (behaviour = 'bad' AND treat = 'lollies'))
...意思相同:
CHECK (behaviour != 'bad' OR treat != 'lollies')
很容易得到這個錯誤,因爲其他答案顯示!
'孩子'是桌子。該列名爲'behaviour' – 2013-05-01 15:22:59
@ypercube:謝謝 - 更正 – 2013-05-01 15:24:12
謝謝!這個答案看起來像是最好的一個,並且有效。當我嘗試插入一些測試值時,我已經測試過它。 我仍然不理解完全背後的邏輯,我很驚訝我可以得到結果我只是布爾邏輯反對使用if/then – user2339718 2013-05-01 15:28:38
這意味着*所有*孩子必須是壞的,不能有冰棍! – 2013-05-01 15:13:26