我正在尝试使用基于一组数据的行填充新的SQLite数据库,但是我在避免重复行方面遇到了麻烦。我可以在Python中实现这一点,但在SQLite中必定有一个设计选项来处理这个问题。
我需要每行只存在三个文本字段的唯一组合。如果我使用UNIQUE限制每个文本字段,则所有三个文本字段必须是唯一的。但我宁愿喜欢这三个字符串的独特组合。
换句话说,这些记录都应该存在: (a,a,a) (a,a,b) (a,b,b) (b,b,b)
如果我将所有三个字段设为UNIQUE并插入这些行,则仅插入(a,a,a)和(b,b,b)。我可以在Python中连接字段1-3并将其用作主键,但它似乎是额外的工作。
答案 0 :(得分:22)
CREATE TABLE (col1 typ
, col2 typ
, col3 typ
, CONSTRAINT unq UNIQUE (col1, col2, col3))
答案 1 :(得分:3)
如果三列确实是主键,那么您可以创建一个复合主键:
create table t (
a text not null,
b text not null,
c text not null,
-- and whatever other columns you have...
primary key (a, b, c)
)
如果您的三个列中的任何一个都可以为NULL,那么您希望获得Cade的唯一约束。