(Aktualisiert – Danke an die Leute, die kommentiert haben )
Moderne Versionen von PostgreSQL
Angenommen, Sie haben eine Tabelle namens test1
, zu der Sie eine automatisch inkrementierende Primärschlüssel-id
hinzufügen möchten (Ersatz) Spalte. Der folgende Befehl sollte in neueren Versionen von PostgreSQL ausreichen:
ALTER TABLE test1 ADD COLUMN id SERIAL PRIMARY KEY;
Ältere Versionen von PostgreSQL
In alten Versionen von PostgreSQL (vor 8.x?) mussten Sie die ganze Drecksarbeit erledigen. Die folgende Befehlsfolge sollte ausreichen:
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');
Auch hier entspricht dies in neueren Versionen von Postgres in etwa dem einzelnen Befehl oben.