2009-08-23 3 views
1

중복을 피하기 위해 데이터베이스가 있습니다. 요구 사항은 :sql 고유의 삽입 설정 제약

1 열에 일치하는 행의 하위 집합

는 1 열의 일치하는 행의 서브 세트 동일한 열 2.

가 그 어떤 임의있을 수있을 수 없다는 동일한 열 3 및 4가 있어야합니다.

저는 SQL을 처음 사용하므로 데이터베이스를 만들 때 이러한 관계를 설정하는 방법이 있습니까? (테이블 만들기) 또는 선택을 수행하고 수동으로 수행해야합니까? 테이블에 삽입 하시겠습니까?

답변

4

실제로 1 열과 2 열은 고유해야하며 1,3 열과 4 열은 고유해야합니다. 따라서 테이블을 만들 때 두 개의 고유 한 constaints를 사용할 수 있습니다.

CREATE TABLE tbl (
    col1 varchar(255), 
    col2 varchar(255), 
    col3 varchar(255), 
    col4 varchar(255), 
    CONSTRAINT uc_first UNIQUE(col1, col2), 
    CONSTRAINT uc_second UNIQUE(col1, col3, col4) 
) 
+0

고마워요. 한 가지, sqlite에서 어떤 제약 조건이 트리거되는지 알 수있는 방법이 있습니까? Google은 문자열 비교 (.IsSameAs ("SQLITE_CONSTRAINT [19] : 1, 3, 4 열은 고유하지 않음)")를 수행해야한다고 불평하는 사람들을 보여줍니다. Klunky처럼 보입니다. – max

0

그냥

당신이 삽입 후 바로 다시 가서 당신이 언급 한 제약 조건에 따라 중복 행을 삭제할 수 ... 볼이 굴러 얻으려면?

+0

윽 ... 그것에 대해 예의가 있어야합니다. 그래 넌 할수있어; 하지만 그렇게하지 않으면 끔찍한 비효율적 일 것입니다. –

+0

충분히 좋습니다. Todd Owen의 대답을 통해 테이블 ​​작성시 CONSTRAINT가 필요하다는 것을 알게되었습니다. 나는 그것이 창조 이후에 바뀔 수 있다고 생각한다. 설명서로 돌아 가기 ... – pavium