sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur lägger man till en auto-inkrementerande primärnyckel till en befintlig tabell, i PostgreSQL?

(Uppdaterad - Tack till personerna som kommenterade )

Moderna versioner av PostgreSQL

Anta att du har en tabell som heter test1 , som du vill lägga till en auto-inkrementerande primärnyckel id (surrogat) kolumn. Följande kommando bör vara tillräckligt i de senaste versionerna av PostgreSQL:

   ALTER TABLE test1 ADD COLUMN id SERIAL PRIMARY KEY;

Äldre versioner av PostgreSQL

I gamla versioner av PostgreSQL (före 8.x?) var du tvungen att göra allt det smutsiga arbetet. Följande sekvens av kommandon bör göra susen:

  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');

Återigen, i de senaste versionerna av Postgres motsvarar detta ungefär det enda kommandot ovan.



  1. Tips för att uppgradera Percona XtraDB Cluster till 8.0

  2. SQL Server trunkerar tyst varchars i lagrade procedurer

  3. Kan ColumnStore hjälpa pagineringsarbetsbelastningar?

  4. Referensdatamönstret:utbyggbart och flexibelt