Est-il possible de changer le nom de la contrainte dans Postgres? J'ai un PK ajouté 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 y a-t-il une manière «douce» de le gérer?
Merci!
la source
pg_catalog
, itérer dessus viaLOOP
et utiliser une requête dynamique pour renommer.Nous avons constaté que les clés primaires sont souvent en retard sur le nom de la table principale. Ce script nous a aidés à identifier et à résoudre les problèmes.
select table_name, constraint_name , 'ALTER TABLE ' || table_name || ' RENAME CONSTRAINT ' || constraint_name || ' TO ' || left(table_name, 58) || '_pkey;' from information_schema.table_constraints tc where constraint_type = 'PRIMARY KEY' and constraint_name <> left(table_name, 58) || '_pkey';
Cela trouve toutes les tables où le nom de la clé primaire n'est plus le modèle "par défaut" (
<tablename>_pkey
) et crée un script de changement de nom pour chacune.La limite de 58 caractères ci-dessus dans le code ci-dessus est de tenir compte de la taille maximale des noms de contraintes (63 octets).
Évidemment, vérifiez ce qui est renvoyé avant de l'exécuter. J'espère que cela sera utile pour les autres.
la source