2009-06-09 6 views
45

Est-il possible de changer le nom de contrainte dans Postgres? J'ai un PK ajouté avec:Mise à jour du nom de contrainte dans PostgreSQL

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

Et je veux avoir un nom différent pour elle, d'être cohérent avec le reste du système. Dois-je supprimer la contrainte PK existante et en créer une nouvelle? Ou y a-t-il un moyen «soft» de le gérer?

Merci!

Répondre

58

Pour la clé primaire, vous devriez être en mesure juste:

ALTER INDEX commerce_contractor_pkey RENAME TO whatever_new_name 

Cela ne fonctionnera pas pour d'autres types de contraintes bien. La meilleure option est de laisser tomber l'ancien et d'en créer un nouveau. Assurez-vous de le faire à l'intérieur d'une transaction, de sorte que le système ne soit pas actif pendant la reconstruction. (Et si vous ne pouvez pas le faire dans une transaction, assurez-vous de créer le nouveau premier, avant de laisser tomber l'ancien)

+0

Merci - la requête fonctionne parfaitement! –

77

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; 
+0

avec quelle version de psql? Je pense que cela ne fonctionne pas avec 9.1 – Regisz

+5

@Regisz PostgreSQL> = 9.2 –

+0

@ArturoHerrero pourrions-nous faire un renommage sur plusieurs contraintes à la fois, si oui, comment? – Erlan

Questions connexes