1. ホーム

[解決済み】PostgreSQLで、既存のテーブルに自動インクリメントの主キーを追加する方法は?

2022-04-02 05:40:12

質問

既存のデータがあるテーブルがあります。テーブルを削除して再作成することなく、主キーを追加する方法はありますか?

解決方法を教えてください。

( 更新情報 - コメントいただいた皆様、ありがとうございました )

PostgreSQLの最新バージョン

という名前のテーブルがあるとします。 test1 に、自動インクリメントの主キーである id (サロゲート)カラムがあります。最近のバージョンのPostgreSQLでは、以下のコマンドで十分でしょう。

   ALTER TABLE test1 ADD COLUMN id SERIAL PRIMARY KEY;

旧バージョンのPostgreSQL

PostgreSQLの古いバージョン(8.xより前?)では、すべての汚い仕事をしなければなりませんでした。以下の一連のコマンドでうまくいくはずです。

  ALTER TABLE test1 ADD COLUMN id INTEGER;
  CREATE SEQUENCE test_id_seq OWNED BY test1.id;
  ALTER TABLE test ALTER COLUMN id SET DEFAULT nextval('test_id_seq');
  UPDATE test1 SET id = nextval('test_id_seq');

繰り返しますが、最近のバージョンのPostgresでは、これは上記の単一コマンドとほぼ同等です。