2011-09-13 25 views
7

Estoy intentando llenar una nueva base de datos SQLite con filas basadas en un conjunto de datos, pero estoy teniendo problemas para evitar filas duplicadas. Podría lograr esto en Python, pero ciertamente debe haber una opción de diseño en SQLite para manejar esto.¿Combinación única de campos en SQLite?

Necesito que cada fila exista solo para una combinación única de tres campos de texto. Si hago que cada campo de texto esté restringido con UNIQUE, entonces los tres deben ser únicos. Pero preferiría una combinación única de las tres cuerdas.

En otras palabras, estos registros deben ser todos capaces de existir: (a, a, a) (a, a, b) (a, b, b) (b, b, b)

Si hago que los tres campos sean ÚNICOS e inserte esas filas, solo se insertan (a, a, a) y (b, b, b). Podría concatenar los campos 1-3 en Python y usarlos como clave principal, pero parece un trabajo extra.

Respuesta

2

Si las tres columnas son en realidad la clave principal entonces usted puede hacer una clave principal compuesta:

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

Si alguno de sus tres columnas puede ser nulo Entonces será En lugar de eso, quiero cumplir con la restricción única de Cade.

Cuestiones relacionadas