2009-06-09 23 views
45

¿Es posible cambiar el nombre de la restricción en Postgres? Tengo una PK añadió con:Actualización del nombre de restricción en PostgreSQL

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

Y quiero tener nombre diferente para él, para ser coherente con el resto del sistema. ¿Debo eliminar la restricción PK existente y crear una nueva? ¿O hay una forma 'suave' de administrarlo?

Gracias!

Respuesta

58

Para la clave primaria, que debe ser capaz de simplemente:

ALTER INDEX commerce_contractor_pkey RENAME TO whatever_new_name 

que no funciona para otros tipos de restricciones sin embargo. La mejor opción es eliminar la anterior y crear una nueva. Asegúrese de hacerlo dentro de una transacción, para que el sistema no esté activo sin ella durante la reconstrucción. (Y si no puede hacerlo en una transacción, asegúrese de crear el nuevo primero, antes de caer el viejo)

+0

Gracias - la consulta funciona perfectamente! –

77

Para cambiar el nombre de una restricción existente en PostgreSQL 9.2 o posterior, puede utilizar ALTER TABLE:

ALTER TABLE name RENAME CONSTRAINT constraint_name TO new_constraint_name; 
+0

con que versión psql? Creo que no funciona con 9.1 – Regisz

+5

@Regisz PostgreSQL> = 9.2 –

+0

@ArturoHerrero ¿Podríamos cambiar el nombre de múltiples restricciones a la vez, si es así, cómo? – Erlan

Cuestiones relacionadas