(更新-コメントしてくれた人々に感謝します )
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の最近のバージョンでは、これは上記の単一のコマンドとほぼ同等です。