SQLite 中独特的字段组合?

发布于 2024-12-04 13:06:46 字数 343 浏览 0 评论 0原文

我正在尝试使用基于一组数据的行填充新的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

眼前雾蒙蒙 2024-12-11 13:06:46
CREATE TABLE (col1 typ
              , col2 typ
              , col3 typ
              , CONSTRAINT unq UNIQUE (col1, col2, col3))

http://www.sqlite.org/lang_createtable.html

CREATE TABLE (col1 typ
              , col2 typ
              , col3 typ
              , CONSTRAINT unq UNIQUE (col1, col2, col3))

http://www.sqlite.org/lang_createtable.html

葵雨 2024-12-11 13:06:46

如果这三列确实是主键,那么您可以创建一个复合主键:

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 的唯一约束。

If the three columns really are the primary key then you can make a composite primary key:

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)
)

If any of your three columns can be NULL then you'd want to get with Cade's unique constraint instead.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文