多列唯一性的SQL逻辑

时间:2018-08-28 17:56:55

标签: sql sqlite

给予

CREATE TABLE table (a TEXT, b TEXT, c TEXT UNIQUE (a, b) );

此约束是否意味着a OR b必须是唯一的或a AND b

2 个答案:

答案 0 :(得分:2)

A and B。以下组合是有效的:

A   B
--- ---
abc def
abc ghi -- 'abc' again, but with different B column
cde ghi -- 'ghi' again, but with different A column

但是您不能再次添加:

abc def

答案 1 :(得分:1)

这是您的表定义:

CREATE TABLE table (a TEXT, b TEXT, c TEXT UNIQUE (a, b) );

您的表定义具有复合唯一键UNIQUE (a, b),这意味着a and b不应重复,或者您也可以说a and b唯一对。但是,NULL可以忽略。

下面的示例数据说明了这一点:

 a    b   c (doesnt matter)
 -----------
'a'  'b' --- valid
'a'  'b' --- will throw error
'b'  'a' --- valid