约束表,如果列A为True,则列B必须为False,即SQLite

时间:2013-07-27 02:50:54

标签: sqlite boolean constraints

我正在制作一个表格,其中有两个布尔列 a b 。我想确保 a 永远不会等于 b ,但我似乎无法使用以下约束使其工作 - 而google似乎没有关于如何在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 个答案:

答案 0 :(得分:0)

省略 a ;将 b 设置为false,其中 a 为真, b 为true,其中 a 为false。 ..至少,我认为那是行得通的。