2011-09-13 52 views
7

我想用基於一組數據的行來填充新的SQLite數據庫,但我在避免重複行時遇到了問題。我可以在Python中實現這一點,但SQLite當然必須有一個設計選項來處理這個問題。SQLite中字段的唯一組合?

我需要每行只存在三個文本字段的唯一組合。如果我將每個文本字段限制爲UNIQUE,那麼所有三個字段必須是唯一的。但我反而喜歡這三個字符串的獨特組合。

換句話說,這些記錄都應該能夠存在: (A,A,A) (A,A,B) (A,B,B) (B,B,B)

如果我將所有三個字段設置爲UNIQUE並插入這些行,則只插入(a,a,a)和(b,b,b)。我可以連接Python中的字段1-3並將其用作主鍵,但它看起來像額外的工作。

回答

2

如果三列真的是主鍵,那麼你可以做一個複合主鍵:

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,那麼你會想要獲得凱德的獨特約束。