postgres에서 여러 기본 키를 어떻게 사용할 수 있습니까?
당신은 할 수 없습니다. 그것은 oxymoron입니다-기본 키의 정의 는 기본 키, 단수라는 것입니다. 둘 이상 가질 수 없습니다.
여러 unique
제약 조건 이있을 수 있습니다 . 여러 열을 포함하는 기본 키 (복합 기본 키)를 가질 수 있습니다. 그러나 테이블에 대해 기본 키를 두 개 이상 가질 수 없습니다.
그러나 표시하는 코드는 언급 한 오류를 생성하지 않습니다.
$ psql -U postgres regress <<__END__
CREATE TABLE word(
word CHARACTER VARYING NOT NULL,
id BIGINT NOT NULL,
repeat INTEGER NOT NULL
);
ALTER TABLE public.word OWNER TO postgres;
ALTER TABLE ONLY word ADD CONSTRAINT "ID_PKEY" PRIMARY KEY (word,id);
__END__
CREATE TABLE
ALTER TABLE
ALTER TABLE
$
실제로이 테이블을 이미 정의했으며 이전 오류를 무시한 다음 마지막 오류 만 표시합니다. 이 코드를 다시 실행하면 출력이 나타납니다.
ERROR: relation "word" already exists
ALTER TABLE
ERROR: multiple primary keys for table "word" are not allowed
물론 실제 오류는 첫 번째 오류입니다.
난 강력하게 항상 사용하는 것이 좋습니다 -v ON_ERROR_STOP=1
의 psql
예 :
$ psql -v ON_ERROR_STOP=1 -U postgres regress <<__END__
CREATE TABLE word(
word CHARACTER VARYING NOT NULL,
id BIGINT NOT NULL,
repeat INTEGER NOT NULL
);
ALTER TABLE public.word OWNER TO postgres;
ALTER TABLE ONLY word ADD CONSTRAINT "ID_PKEY" PRIMARY KEY (word,id);
__END__
ERROR: relation "word" already exists
$
첫 번째 오류에서 어떻게 중지되는지 봅니까?
(이것이 기본값이지만 이전 버전과의 호환성을 손상시킵니다).