【问题标题】:Unique combination of fields in SQLite?SQLite中字段的独特组合?
【发布时间】:2011-11-16 11:24:48
【问题描述】:

我正在尝试使用基于一组数据的行来填充新的 SQLite 数据库,但我在避免重复行方面遇到了麻烦。我可以在 Python 中完成此操作,但在 SQLite 中肯定必须有一个设计选项来处理此问题。

我需要每行仅存在三个文本字段的唯一组合。如果我使每个文本字段都用 UNIQUE 约束,那么这三个字段都必须是唯一的。但我想要三个字符串的独特组合。

也就是说,这些记录应该都可以存在: (一,一,一) (一,一,乙) (一,乙,乙) (b, b, b)

如果我将所有三个字段设为唯一并插入这些行,则仅插入 (a,a,a) 和 (b,b,b)。我可以在 Python 中连接字段 1-3 并将其用作主键,但这似乎是额外的工作。

【问题讨论】:

    标签: python sqlite database-design unique-constraint


    【解决方案1】:

    如果三列确实是主键,那么你可以做一个复合主键:

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

    【讨论】:

      【解决方案2】:
      CREATE TABLE (col1 typ
                    , col2 typ
                    , col3 typ
                    , CONSTRAINT unq UNIQUE (col1, col2, col3))
      

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

      【讨论】:

        猜你喜欢
        • 2012-12-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-02
        • 1970-01-01
        • 2011-03-11
        • 1970-01-01
        相关资源
        最近更新 更多