Lors de la création d'une table dans PostgreSQL, les noms de contrainte par défaut sera attribué si non fourni:PostgreSQL: Les noms de contrainte par défaut
CREATE TABLE example (
a integer,
b integer,
UNIQUE (a, b)
);
Mais en utilisant ALTER TABLE
pour ajouter une contrainte, il semble un nom est obligatoire:
ALTER TABLE example ADD CONSTRAINT my_explicit_constraint_name UNIQUE (a, b);
Cela a provoqué des incohérences de dénomination sur les projets sur lesquels j'ai travaillé, et pose les questions suivantes:
Existe-t-il un moyen simple d'ajouter une contrainte à une table existante avec le nom qu'elle aurait reçu si elle avait été ajoutée lors de la création de la table?
Si ce n'est pas le cas, les noms par défaut devraient-ils être complètement évités pour éviter les incohérences?
Je fais une règle pour éviter les noms par défaut pour cette seule raison - vous vous retrouvez avec la situation où, dans tous les déploiements les contraintes ont des noms différents –