PostgreSQL 테이블을 변경하고 열을 고유하게 만들려면 어떻게합니까?


166

PostgreSQL에는 스키마가 다음과 같은 테이블이 있습니다.

CREATE TABLE "foo_table" (
    "id" serial NOT NULL PRIMARY KEY,
    "permalink" varchar(200) NOT NULL,
    "text" varchar(512) NOT NULL,
    "timestamp" timestamp with time zone NOT NULL
)

이제 테이블을 변경하여 테이블 전체에서 고유 링크를 만들고 싶습니다. 아무도 나를 도울 수 있습니까?

티아


2
create unique index on foo_table (permalink)
a_horse_with_no_name 17 년

답변:


270

PostgreSQL 문서에서 알아 낸 정확한 구문은 다음과 같습니다.

ALTER TABLE the_table ADD CONSTRAINT constraint_name UNIQUE (thecolumn);

고마워 프레드 .


231

또는 DB가 다음을 사용하여 제약 조건 이름을 자동으로 할당하도록합니다.

ALTER TABLE foo ADD UNIQUE (thecolumn);

1
이렇게하면 postgres가 제한 조건을 작성하지만 이름이 "자동으로"지정됩니다. "add"라는 단어가 지정됩니다. 방금 시도했습니다
Santi

위의 구문을 사용하면 Postgress는 그 이름에 mytable_mycolumn_key 만족 하는 이름으로 새로운 제약 조건을 만듭니다. :-)
Adam

41

하나 이상의 열에 대한 고유 제한 조건을 작성할 수도 있습니다.

ALTER TABLE the_table 
    ADD CONSTRAINT constraint_name UNIQUE (column1, column2);

이것은 다음과 같이 작동하지 않는 것 같습니다 : ALTER TABLE actions ADD CONSTRAINT actions_unique_constraint UNIQUE (payload::text, name);또는ALTER TABLE actions ADD CONSTRAINT actions_unique_constraint UNIQUE ((payload::text), name);
writofmandamus
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.