web-dev-qa-db-ja.com

PostgreSQLの制約名の更新

Postgresで制約名を変更することはできますか? PKが追加されています:

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

そして、他のシステムとの一貫性を保つために、別の名前を付けたいです。既存のPK制約を削除して、新しい制約を作成しますか?または、それを管理する「ソフト」な方法はありますか?

ありがとう!

73
Sebastian

主キーについては、次のことができるはずです。

ALTER INDEX commerce_contractor_pkey RENAME TO whatever_new_name

ただし、他のタイプの制約では機能しません。最適なオプションは、古い制約を削除して新しい制約を作成することです。必ずトランザクション内で実行してください。再構築中にシステムが存在しないとシステムは動作しません。 (そして、トランザクションでそれができない場合、古いものをドロップする前に、新しいものを作成してくださいfirst

70
Magnus Hagander

既存の制約の名前を変更するにはPostgreSQL 9.2以降を使用します。 ALTER TABLE

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