SQLite中字段的唯一组合?
我正在尝试用一组数据来填充一个新的SQLite数据库,但我在避免重复行方面遇到了问题。我可以在Python中做到这一点,但我相信SQLite中肯定有设计选项可以处理这个问题。
我需要每一行都只存在于三个文本字段的唯一组合中。如果我让每个文本字段都设置为唯一(UNIQUE),那么这三个字段都必须是唯一的。但我其实想要的是这三个字符串的唯一组合。
换句话说,这些记录都应该可以存在: (a, a, a) (a, a, b) (a, b, b) (b, b, b)
如果我把所有三个字段都设置为唯一,并插入这些行,那么只有(a, a, a)和(b, b, b)会被插入。我可以在Python中把这三个字段连接起来作为主键,但这似乎有点麻烦。
2 个回答
4
如果这三列确实是主键的话,你可以把它们组合起来,形成一个复合主键:
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的唯一约束来代替。
31
CREATE TABLE (col1 typ
, col2 typ
, col3 typ
, CONSTRAINT unq UNIQUE (col1, col2, col3))
这是一个链接,指向SQLite的官方网站,具体是关于创建表格的内容。SQLite是一种轻量级的数据库,常用于小型应用程序和开发测试中。通过这个链接,你可以了解如何在SQLite中创建数据表,表格就像一个电子表格,用来存储和管理数据。