开发者

Unique combination of fields in SQLite?

开发者 https://www.devze.com 2023-04-04 10:37 出处:网络
I\'m trying to populate a new SQLite database with rows based o开发者_如何学Cn a set of data, but I\'m having trouble with avoiding duplicate rows.I could accomplish this in Python, but there certainl

I'm trying to populate a new SQLite database with rows based o开发者_如何学Cn 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.


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

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


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.

0

精彩评论

暂无评论...
验证码 换一张
取 消