2009-06-09 27 views
45

Ist es möglich, den Constraint-Namen in Postgres zu ändern? Ich habe eine PK hinzugekommen:Constraint Name Update in PostgreSQL

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

Und ich will für sie unterschiedliche Namen haben, mit dem Rest des Systems in Einklang zu stehen. Soll ich die vorhandene PK-Einschränkung löschen und eine neue erstellen? Oder gibt es einen "weichen" Weg zu verwalten?

Danke!

Antwort

58

für den Primärschlüssel, sollten Sie in der Lage sein, nur: obwohl

ALTER INDEX commerce_contractor_pkey RENAME TO whatever_new_name 

Das wird nicht für andere Arten von Einschränkungen arbeiten. Die beste Option ist es, die alte fallen zu lassen und eine neue zu erstellen. Stellen Sie sicher, dass Sie dies innerhalb einer Transaktion tun, damit das System während der Neuerstellung nicht ohne diese Daten ausgeführt wird. (Und wenn Sie es in einer Transaktion nicht möglich ist, sollten Sie die neue erste, erstellen, bevor die alte dropping)

+0

Danke - die Abfrage funktioniert perfekt! –

77

Um eine bestehende Einschränkung in PostgreSQL 9.2 oder neuer zu umbenennen, können Sie ALTER TABLE:

ALTER TABLE name RENAME CONSTRAINT constraint_name TO new_constraint_name; 
+0

mit welcher psql version? Ich denke, es funktioniert nicht mit 9.1 – Regisz

+5

@Regisz PostgreSQL> = 9.2 –

+0

@ ArturoHerrero könnten wir Umbenennen auf mehrere Einschränkungen auf einmal, wenn ja, wie? – Erlan