web-dev-qa-db-fra.com

Mise à jour du nom de contrainte dans PostgreSQL

Est-il possible de changer le nom de la contrainte dans Postgres? J'ai ajouté un PK avec:

ALTER TABLE contractor_contractor ADD CONSTRAINT commerce_contractor_pkey PRIMARY KEY(id);

Et je veux avoir un nom différent pour cela, pour être cohérent avec le reste du système. Dois-je supprimer la contrainte PK existante et en créer une nouvelle? Ou existe-t-il une manière "douce" de le gérer?

Merci!

73
Sebastian

Pour la clé primaire, vous devriez pouvoir:

ALTER INDEX commerce_contractor_pkey RENAME TO whatever_new_name

Cela ne fonctionnera pas pour d'autres types de contraintes cependant. La meilleure option est de supprimer l'ancienne et d'en créer une nouvelle. Assurez-vous de le faire dans une transaction, afin que le système ne soit pas sans lui pendant la reconstruction. (Et si vous ne pouvez pas le faire dans une transaction, assurez-vous de créer le nouveau premier, avant de supprimer l'ancien)

70
Magnus Hagander

Pour renommer une contrainte existante dans PostgreSQL 9.2 ou plus récent , vous pouvez utiliser ALTER TABLE :

ALTER TABLE name RENAME CONSTRAINT constraint_name TO new_constraint_name;
119
Arturo Herrero