2014-10-26 72 views
1

我希望能夠在我的表中輸入以下值:0,0; 0,1; 1,0 但我想禁用以下值:1,1檢查語句中的多個字段

我已經做了以下查詢:

CREATE TABLE mytab (a CHAR(1), b CHAR(1), CHECK(a != 1 AND b != 1));

我能夠進入0,0,但我無法進入1,0。我如何重寫這個邏輯陳述以符合我的要求?

回答

3

檢查約束應該是:

check (not (a = 1 and b = 1)) 

或等價:

check (a <> 1 or b <> 1) 

(其實,這些都是NULL值的存在並不完全等同的第二個可能是想你想如果。您允許NULL值。)

+0

完美。你能解釋爲什麼我原來的支票失敗了嗎? – jipje44 2014-10-26 15:55:44

+0

@ jipje44。 。 。它沒有實現正確的邏輯。它檢查*兩個*值是否與「1」不同,而不僅僅是其中之一。 – 2014-10-26 15:57:16

1

使用OR代替AND

CHECK(a != 1 OR b != 1))