既存のデータを含むテーブルがあります。テーブルを削除して再作成せずに主キーを追加する方法はありますか?
ベストアンサー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 の最近のバージョンでは、これは上記の単一コマンドとほぼ同等です。