PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come aggiungere una chiave primaria a incremento automatico a una tabella esistente, in PostgreSQL?

(Aggiornato - Grazie alle persone che hanno commentato )

Versioni moderne di PostgreSQL

Supponiamo di avere una tabella denominata test1 , a cui vuoi aggiungere un id di chiave primaria a incremento automatico colonna (surrogato). Il seguente comando dovrebbe essere sufficiente nelle versioni recenti di PostgreSQL:

   ALTER TABLE test1 ADD COLUMN id SERIAL PRIMARY KEY;

Versioni precedenti di PostgreSQL

Nelle vecchie versioni di PostgreSQL (prima della 8.x?) dovevi fare tutto il lavoro sporco. La seguente sequenza di comandi dovrebbe fare il trucco:

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

Ancora una volta, nelle versioni recenti di Postgres questo è più o meno equivalente al comando singolo sopra.