PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment ajouter une clé primaire auto-incrémentée à une table existante, dans PostgreSQL ?

(Mise à jour - Merci aux personnes qui ont commenté )

Versions modernes de PostgreSQL

Supposons que vous ayez une table nommée test1 , auquel vous souhaitez ajouter un id de clé primaire à incrémentation automatique (substitut) colonne. La commande suivante devrait suffire dans les versions récentes de PostgreSQL :

   ALTER TABLE test1 ADD COLUMN id SERIAL PRIMARY KEY;

Anciennes versions de PostgreSQL

Dans les anciennes versions de PostgreSQL (avant 8.x ?), vous deviez faire tout le sale boulot. La séquence de commandes suivante devrait faire l'affaire :

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

Encore une fois, dans les versions récentes de Postgres, cela équivaut à peu près à la commande unique ci-dessus.