ALTER COLLATION — modifie la définition d'une collation
ALTER COLLATION name REFRESH VERSION ALTER COLLATION nom RENAME TO nouveau_nom ALTER COLLATION nom OWNER TO { nouveau_propriétaire | CURRENT_USER | SESSION_USER } ALTER COLLATION nom SET SCHEMA nouveau_schéma
ALTER COLLATION modifie la définition d'une collation.
Pour pouvoir utiliser la commande ALTER COLLATION, vous devez être propriétaire de la collation. Pour en modifier le propriétaire, vous devez également être un membre direct ou indirect du nouveau rôle propriétaire, et ce rôle doit détenir le privilège CREATE sur le schéma de la collation. (Ces restrictions ont pour effet que vous ne pouvez effectuer aucune modification de propriétaire qui serait impossible en supprimant et en recréant la collation. Cependant, un super-utilisateur peut modifier le propriétaire de n'importe quelle collation, quoi qu'il arrive.)
Le nom (éventuellement précédé par le schéma) d'une collation existante.
Le nouveau nom de la collation.
Le nouveau propriétaire de la collation.
Le nouveau schéma de la collation.
Met à jour la version de la collation. Voir Notes ci-dessous.
Lorsque les collations fournies par la bibliothèque ICU, la version du collator spécifique à ICU est enregistrée dans le catalogue système au moment de la création de l'objet collation. Quand la collation est utilisée, la version courante est vérifiée par rapport à la version enregistrée, et un avertissement est émis en cas d'incompatibilité, par exemple :
WARNING: collation "xx-x-icu" has version mismatch DETAIL: The collation in the database was created using version 1.2.3.4, but the operating system provides version 2.3.4.5. HINT: Rebuild all objects affected by this collation and run ALTER COLLATION pg_catalog."xx-x-icu" REFRESH VERSION, or build PostgreSQL with the right library version.
Un changement dans les définitions de collations peut mener à corrompre les index ainsi que d'autres problèmes où le moteur de la base de données s'appuie sur le fait que les objets stockées aient un certain ordre. En général, cela devrait être évité, mais cela peut arriver dans certaines circonstances légitimes, comme lors de l'utilisation de pg_upgrade pour mettre à jour vers des binaires serveur liés à une version plus récente d'ICU. Quand cela arrive, tous les objets dépendant de cette collation devraient être reconstruits, par exemple, en utilisant REINDEX. Quand l'opération est terminée, la version de la collation peut être rafraichie en utilisant la commande ALTER COLLATION ... REFRESH VERSION. Cela mettra à jour le catalogue système pour enregistrer la version courante du collator et fera que l'avertissement ne sera plus affiché. Veuillez noter que cela ne vérifie absolument pas si tous les objets affectés ont été reconstruits correctement.
La requête suivante peut être utilisée pour identifier toutes les collations dans la base de données courante qui nécessitent d'être rafraichie ainsi que tous les objets qui en dépendent :
SELECT pg_describe_object(refclassid, refobjid, refobjsubid) AS "Collation", pg_describe_object(classid, objid, objsubid) AS "Object" FROM pg_depend d JOIN pg_collation c ON refclassid = 'pg_collation'::regclass AND refobjid = c.oid WHERE c.collversion <> pg_collation_actual_version(c.oid) ORDER BY 1, 2;