SQLite 中独特的字段组合?
我正在尝试使用基于一组数据的行填充新的 SQLite 数据库,但在避免重复行方面遇到了麻烦。我可以用 Python 完成这个任务,但是 SQLite 中肯定有一个设计选项来处理这个任务。
我需要每一行仅针对三个文本字段的唯一组合而存在。如果我将每个文本字段设置为 UNIQUE 约束,则所有三个文本字段都必须是唯一的。但我想要三个字符串的独特组合。
换句话说,这些记录应该都能够存在: (一、一、一) (一、一、二) (一、二、二) (b, b, b)
如果我将所有三个字段设为唯一并插入这些行,则仅插入 (a,a,a) 和 (b,b,b)。我可以在 Python 中连接字段 1-3 并将其用作主键,但这似乎是额外的工作。
I'm trying to populate a new SQLite database with rows based on a set of data, but I'm having trouble with avoiding duplicate rows. I could accomplish this in Python, but there certainly must be a design option in SQLite to handle this.
I need each row to exist for only a unique combination of three text fields. If I make each text field constrained with UNIQUE, then all three must be unique. But I would instead like a unique combination of the three strings.
In other words, these records should all be able to exist:
(a, a, a)
(a, a, b)
(a, b, b)
(b, b, b)
If I make all three fields UNIQUE and insert those rows, only (a,a,a) and (b,b,b) are inserted. I could concatenate fields 1-3 in Python and use that as a primary key, but it seems like extra work.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
http://www.sqlite.org/lang_createtable.html
http://www.sqlite.org/lang_createtable.html
如果这三列确实是主键,那么您可以创建一个复合主键:
如果三列中的任何一列可以为 NULL,那么您需要使用 Cade 的唯一约束。
If the three columns really are the primary key then you can make a composite primary key:
If any of your three columns can be NULL then you'd want to get with Cade's unique constraint instead.