PostgreSQL で既存のテーブルに自動増分主キーを追加するにはどうすればよいでしょうか? 質問する

PostgreSQL で既存のテーブルに自動増分主キーを追加するにはどうすればよいでしょうか? 質問する

既存のデータを含むテーブルがあります。テーブルを削除して再作成せずに主キーを追加する方法はありますか?

ベストアンサー1

(更新しました - コメントをくださった方々に感謝します)

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 test1 ALTER COLUMN id SET DEFAULT nextval('test_id_seq');
  UPDATE test1 SET id = nextval('test_id_seq');

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

おすすめ記事