2011-09-13 2 views
7

데이터 집합을 기반으로하는 행을 사용하여 새 SQLite 데이터베이스를 채우려하고 있지만 중복 행을 피하는 데 문제가 있습니다. 나는 이것을 파이썬에서 수행 할 수 있지만, 이것을 처리하기 위해서는 반드시 SQLite에 디자인 옵션이 있어야한다.SQLite의 고유 한 필드 조합?

3 개의 텍스트 필드의 고유 한 조합에 대해서만 각 행이 존재해야합니다. 각 텍스트 필드를 UNIQUE로 제한하면 3 개 모두 고유해야합니다. 그러나 나는 대신에 세 개의 문자열의 독특한 조합을 원합니다.

,이 기록은 전혀 존재 할 수 있어야한다 : (A, A, A) (A, A, B) (A, B, B) (B, B, B)

세 개의 필드를 모두 고유하게 만들고 해당 행을 삽입하면 (a, a, a) 및 (b, b, b) 만 삽입됩니다. 파이썬에서 필드 1 ~ 3을 연결하여이를 기본 키로 사용할 수 있지만 추가 작업처럼 보입니다.

답변

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

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

+0

환상적입니다. 감사합니다. 그 흐름도는 나를 죽이지 만 지금은 더 이해가됩니다. – Thomas

2

세 개의 열이 정말 기본 키있는 경우에 당신이 복합 기본 키를 만들 수 있습니다 : 당신의 세 개의 열 중 하나가 다음 좋겠 NULL이 될 수있는 경우

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

을 대신 Cade의 고유 한 제약 조건을 원합니다.

관련 문제