2010-12-15 2 views
1

안녕하세요.이 질문이 여러 번 게시되었지만 내 문제에 대한 답변을 찾지 못했음을 알고 있습니다. 문제는 내가 테이블과 컬럼 "id"를 갖고 있기를 원한다. 이 유형의 열은 연속적이며 각 삽입 이후의 다음 값은 시퀀스에서 오는 것이므로 모든 것이 괜찮은 것처럼 보이지만 때때로이 오류를 표시하는 경우가 있습니다. 왜 그런지 몰라? 문서에서는 시퀀스가 ​​어리석은 교수이며 항상 작동합니다. 해당 열에 UNIQUE 제약 조건을 추가하면 해당 제약 조건이 적용됩니까? 나는 Postres에 여러 번 전에 일했지만이 오류는 나를 처음으로 보여주고있다. 나는 정상적으로 모든 것을했고 전에이 문제가 없었습니다. 앞으로 생성 될 모든 테이블에 대해 사용할 수있는 답을 찾도록 도와 줄 수 있습니까? 내가 추가하는 경우postgresql 중복 키가 고유 제한을 위반 함

CREATE TABLE comments 
(
    id serial NOT NULL, 
    some_column text NOT NULL, 
    CONSTRAINT id_pkey PRIMARY KEY (id) 
) 
WITH (
    OIDS=FALSE 
); 
ALTER TABLE interesting.comments OWNER TO postgres; 

: 우리는이 같은 쉽게 뭔가를 말할 수

ALTER TABLE comments ADD CONSTRAINT id_id_key UNIQUE(id) 

의지 한 정도로 또는 수행해야 다른 일이 될 수 있다면? 이전의 PostgreSQL 7.3, 시리얼 암시 UNIQUE에 : http://www.postgresql.org/docs/current/interactive/datatype.html

주에서

+1

데이터를 삽입하는 코드를 표시하십시오. 기본 키를 갖는 것은 이미 고유 제한 조건을 강요 할 것이기 때문에 추가 할 필요가 없습니다. –

답변

1

. 이것은 더 이상 자동이 아닙니다. 직렬 열을 고유 제한 조건 또는 기본 키로 사용하려면 직렬 열을 다른 모든 데이터 형식과 동일하게 지정해야합니다.

2

오류가 발생했을 때 기본 키가 이미 중복 값을 삽입하지 못하게합니다. 이를 수행하기 위해 또 다른 고유 제한 조건을 추가 할 필요는 없습니다.

"중복 키"오류는 중복 키를 생성했기 때문에 작업이 완료되지 않았 음을 나타내며 이미 테이블에 커밋 된 중복 키를 발견 한 것이 아닙니다.

0

This article explains 시퀀스가 ​​동기화되지 않았을 수 있으므로 수동으로 다시 동기화해야합니다.

관련 문제