2011-09-13 25 views
7

Yeni bir SQLite veritabanını bir veri kümesine dayalı satırlarla doldurmaya çalışıyorum, ancak yinelenen satırlardan kaçınmayla ilgili sorun yaşıyorum. Bunu Python'da yapabilirdim, ancak SQLite'de bunun üstesinden gelmek için mutlaka bir tasarım seçeneği olmalı.SQLite'deki alanların benzersiz kombinasyonu?

Üç metin alanının yalnızca benzersiz bir birleşimi için varolan her bir satıra ihtiyacım var. Her metin alanını UNIQUE ile sınırlandırırsam, üçünün de benzersiz olması gerekir. Ama bunun yerine üç dizenin eşsiz bir kombinasyonunu tercih ediyorum.

başka deyişle

, bu kayıtlar her biri mümkün olmalıdır: (a, a, a) (a, a, b) (a, b, b) (b, b, b)

Üç alanın tümünü UNIQUE yapar ve bu satırları eklerseniz, yalnızca (a, a, a) ve (b, b, b) eklenir. Python'da 1-3 alanlarını birleştirebilir ve bunu birincil anahtar olarak kullanabilirim, ancak ekstra çalışma gibi görünüyor.

cevap

2

üç sütun gerçekten birincil anahtar varsa o zaman bir bileşik birincil anahtar yapabilirsiniz: senin üç sütun herhangi ardından şimdi etsen BOŞ olabiliyorsa

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

bunun yerine Cade'nin benzersiz kısıtlaması ile almak istiyorum.

İlgili konular