0

我正在处理一个有两个布尔列ab的表。我想确保a永远不会等于b,但我似乎无法使用以下约束使其工作——而且谷歌似乎没有任何关于如何在 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      

有任何想法吗?我觉得我的总体思路是正确的,只是我遗漏了一些非常明显的东西。

4

1 回答 1

0

只需省略一个; 在 a 为真的情况下将b设置为 false,在a为假的情况b设置为 true ……至少,我认为这可行。

于 2013-07-27T03:02:14.293 回答