テーブル内で主キーを作成する方法を知っていますが、既存のインデックスを主キーにする方法を教えてください。既存のテーブルをデータベース間でコピーしようとしています。テーブルを表示すると、下部のインデックスは次の形式です。
"my_index" PRIMARY KEY, btree (column1, column2)
私はインデックスを作成しました:
CREATE INDEX my_index ON my_table (column1, column2)
しかし、それを主キーにする方法がわかりません...
更新:サーバーのバージョンは8.3.3です
ALTER TABLEを使用して、主キーconstraintを追加します。 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で働いた