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。我如何重寫這個邏輯陳述以符合我的要求?
我希望能夠在我的表中輸入以下值: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。我如何重寫這個邏輯陳述以符合我的要求?
檢查約束應該是:
check (not (a = 1 and b = 1))
或等價:
check (a <> 1 or b <> 1)
(其實,這些都是NULL
值的存在並不完全等同的第二個可能是想你想如果。您允許NULL
值。)
使用OR
代替AND
:
CHECK(a != 1 OR b != 1))
完美。你能解釋爲什麼我原來的支票失敗了嗎? – jipje44 2014-10-26 15:55:44
@ jipje44。 。 。它沒有實現正確的邏輯。它檢查*兩個*值是否與「1」不同,而不僅僅是其中之一。 – 2014-10-26 15:57:16