PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie füge ich einer vorhandenen Tabelle in PostgreSQL einen automatisch inkrementierenden Primärschlüssel hinzu?

(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.