2011-11-26 64 views
0

所以我想有一个整数ID的主场自动增量。然后我还想要另一个带有文本字段的键。两个条目不能具有相同的ID,也不能具有相同的文本字段。问题是,如果ID不同但文本字段相同,我仍然不希望它们插入。不幸的是,创建一个带有两个主键的表格意味着它可以被插入。无论如何,除了两个主键之外还有其他表达方式吗?插入到Android数据库的密钥

回答

1

一个表只能有一个主键。当你写

CREATE TABLE T1 ... PRIMARY KEY (A, B) 

你实际上并没有创建两个主键,而是一个复合(即多列)主键。在这种情况下,这意味着两行不能共享相同的值A和B

如果你需要A和B都是唯一的,那么你需要使用一个UNIQUE约束(或者,或者,唯一索引)。

SQLite documentation

UNIQUE约束类似于PRIMARY KEY约束,不同的是一个单一的表可以具有任意数量的UNIQUE约束。对于表上的每个UNIQUE约束,每行必须包含由UNIQUE约束标识的列中唯一值的组合。

例如:

CREATE TABLE T1 (A INTEGER PRIMARY KEY, B INTEGER UNIQUE ...)