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