PostgreSQL에서 기존 인덱스를 기본 키로 승격시키는 방법 데이터베이스로 기존

테이블 내에서 기본 키를 만드는 방법을 알고 있지만 기존 인덱스를 기본 키로 만들려면 어떻게해야합니까? 한 데이터베이스에서 다른 데이터베이스로 기존 테이블을 복사하려고합니다. 표를 표시하면 맨 아래의 색인은 다음과 같은 형식입니다.

"my_index" PRIMARY KEY, btree (column1, column2)

나는 다음을 사용하여 색인을 만들었습니다.

CREATE INDEX my_index ON my_table (column1, column2)

그러나 기본 키를 만드는 방법을 모르겠습니다 …

업데이트 : 내 서버 버전은 8.3.3입니다.



답변

ALTER TABLE을 사용하여 기본 키 제약 조건 을 추가합니다 . Postgres에서는 ” ALTER TABLE .. ADD table_constraint_using_index“양식을 사용하여 색인을 “승격”할 수 있습니다

인덱스는 기본 키에 대해 고유해야합니다.

ALTER TABLE my_table
    ADD CONSTRAINT PK_my_table PRIMARY KEY USING INDEX my_index;

답변

postgresql의 해당 버전에서 인덱스를 기본 키로 변환 할 수 있다고 생각하지 않습니다.

기존 인덱스를 삭제하고 지정한 열을 사용하여 기본 키를 만듭니다. :

DROP INDEX my_index;
ALTER TABLE ONLY my_table ADD CONSTRAINT pk_my_table PRIMARY KEY(column1,column2);

7.4와 8.4에서 일함