La guía paso a paso o código que encontrarás en este post es la resolución más rápida y efectiva que encontramos a esta inquietud o problema.
ALTER COLLATION: cambia la definición de una colación
Sinopsis
ALTER COLLATION name REFRESH VERSION ALTER COLLATION name RENAMETO new_name ALTER COLLATION name OWNER TO CURRENT_USER ALTER COLLATION name SETSCHEMA new_schema
Descripción
ALTER COLLATION
cambia la definición de una colación.
Debe poseer la intercalación para usar ALTER COLLATION
. Para modificar el propietario, también debe ser miembro directo o indirecto del nuevo rol de propietario, y ese rol debe tener CREATE
privilegio en el esquema de la colación. (Estas restricciones imponen que modificar el propietario no hace nada que no pudieras hacer eliminando y recreando la intercalación. Sin embargo, un superusuario puede modificar la propiedad de cualquier intercalación de todos modos).
Parámetros
name
-
El nombre (opcionalmente calificado por esquema) de una intercalación existente.
new_name
-
El nuevo nombre de la colación.
new_owner
-
El nuevo dueño de la colación.
new_schema
-
El nuevo esquema para la intercalación.
REFRESH VERSION
-
Actualice la versión de la intercalación. Consulte las notas a continuación.
notas
Cuando se utilizan intercalaciones proporcionadas por la biblioteca ICU, la versión específica de ICU del intercalador se registra en el catálogo del sistema cuando se crea el objeto de intercalación. Cuando se usa la intercalación, la versión actual se compara con la versión grabada y se emite una advertencia cuando hay una discrepancia, por ejemplo:
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 cambio en las definiciones de intercalación puede generar índices corruptos y otros problemas porque el sistema de la base de datos se basa en objetos almacenados que tienen un cierto orden de clasificación. En general, esto debe evitarse, pero puede suceder en circunstancias legítimas, como cuando se usa pg_upgrade
para actualizar a binarios de servidor vinculados con una versión más nueva de ICU. Cuando esto sucede, todos los objetos que dependen de la intercalación deben reconstruirse, por ejemplo, usando REINDEX
. Cuando haya terminado, la versión de intercalación se puede actualizar con el comando ALTER COLLATION ... REFRESH VERSION
. Esto actualizará el catálogo del sistema para registrar la versión actual del intercalador y hará que la advertencia desaparezca. Tenga en cuenta que esto en realidad no verifica si todos los objetos afectados se han reconstruido correctamente.
Al utilizar intercalaciones proporcionadas por libc
y PostgreSQL se creó con la biblioteca GNU C, la versión de la biblioteca C se usa como una versión de colación. Dado que las definiciones de intercalación generalmente cambian solo con las versiones de la biblioteca GNU C, esto proporciona cierta defensa contra la corrupción, pero no es completamente confiable.
Actualmente, no hay seguimiento de versiones para la intercalación predeterminada de la base de datos.
La siguiente consulta se puede utilizar para identificar todas las intercalaciones en la base de datos actual que deben actualizarse y los objetos que dependen de ellas:
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)ORDERBY1,2;
Ejemplos
Para cambiar el nombre de la intercalación de_DE
para german
:
ALTER COLLATION "de_DE"RENAMETO german;
Para cambiar el propietario de la colación en_US
para joe
:
ALTER COLLATION "en_US" OWNER TO joe;
Compatibilidad
No hay ALTER COLLATION
declaración en el estándar SQL.
Ver también
CREAR COLACIÓN, SOLTAR COLACIÓN
Anterior | Arriba | Próximo |
ALTERAR AGREGADO | Casa | ALTERAR CONVERSIÓN |