2013-07-27 50 views
0

我正在一張桌子上,我有兩個布爾列ab。我想確保a永遠不會等於b,但我似乎無法使用以下約束來使其工作 - 而且Google似乎沒有任何關於如何做這種事情的內容SQLite的,但它可能是我是措辭事情的方式:限制一個表,如果列A是True,那麼列B必須是False,SQLite

create table foobar 
(
    a boolean, 
    b boolean, 
    Check(a<>b) 
); 

我也試着定義是這樣的表格:

create table foobar 
(
    a boolean Check(a<>b), 
    b boolean Check(b<>a) 
); 

但好像不管我做什麼,當我去把兩個列插入相同的值時,SQLite似乎並沒有意識到我特意要這樣做它 - 無論如何 - 儘量不要讓b等於a是,反之亦然。

insert into foobar values (1,1); 

select * from foobar; 
    a   b   
    ---------- ---------- 
    1   1  

任何想法?我覺得我有正確的想法,只是我錯過了一些非常明顯的東西。

+1

稍微偏離主題:但不能總是推斷b的價值,從?因此,這兩個領域有什麼意義?你有意創造一個可能的失敗點。讓你的生活更簡單,避免多餘的領域跳過檢查。 –

+0

@丹尼爾哦,**嗯**,好點。看,我知道**有一些我失蹤了!謝謝。 :) –

+0

我仍然想知道答案,因爲這兩個示例中的語法對我來說似乎都是正確的。 –

回答

0

只是省略a;設置b假其中一個將是真實的,b爲真,其中一個本來是假的......至少,我認爲這會工作。

相關問題