ALTER DATABASE

ALTER DATABASE — modificar una base de datos

Synopsis

ALTER DATABASE name [ [ WITH ] option [ ... ] ]

donde option puede ser:

    ALLOW_CONNECTIONS allowconn
    CONNECTION LIMIT connlimit
    IS_TEMPLATE istemplate

ALTER DATABASE name RENAME TO new_name

ALTER DATABASE name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }

ALTER DATABASE name SET TABLESPACE new_tablespace

ALTER DATABASE name REFRESH COLLATION VERSION

ALTER DATABASE name SET configuration_parameter { TO | = } { value | DEFAULT }
ALTER DATABASE name SET configuration_parameter FROM CURRENT
ALTER DATABASE name RESET configuration_parameter
ALTER DATABASE name RESET ALL

Descripción

ALTER DATABASE cambia los atributos de una base de datos.

La primera forma cambia ciertos parámetros por base de datos (consulta los detalles más abajo). Solo el propietario de la base de datos o un superusuario puede cambiar estos parámetros.

La segunda forma cambia el nombre de la base de datos. Solo el propietario de la base de datos o un superusuario puede renombrar una base de datos; los propietarios que no sean superusuarios también deben tener el privilegio CREATEDB. La base de datos actual no puede ser renombrada (conéctate a una base de datos diferente si necesitas hacer esto).

La tercera forma cambia el propietario de la base de datos. Para cambiar el propietario, debes poder hacer SET ROLE al nuevo rol propietario, y debes tener el privilegio CREATEDB. (Ten en cuenta que los superusuarios tienen todos estos privilegios automáticamente).

La cuarta forma cambia el tablespace predeterminado de la base de datos. Solo el propietario de la base de datos o un superusuario puede hacer esto; también debes tener el privilegio de creación en el nuevo tablespace. Este comando mueve físicamente cualquier tabla o índice del antiguo tablespace predeterminado de la base de datos al nuevo tablespace. El nuevo tablespace predeterminado debe estar vacío para esta base de datos, y nadie puede estar conectado a ella. Las tablas y los índices en tablespaces que no sean el predeterminado no se ven afectados. El método utilizado para copiar archivos al nuevo tablespace se ve afectado por el parámetro file_copy_method.

Las formas restantes cambian el valor predeterminado de la sesión para una variable de configuración en tiempo de ejecución para una base de datos de PostgreSQL. Cada vez que se inicie posteriormente una nueva sesión en esa base de datos, el valor especificado se convierte en el valor predeterminado de la sesión. El valor predeterminado específico de la base de datos anula cualquier configuración presente en postgresql.conf o que se haya recibido desde la línea de comandos de postgres. Solo el propietario de la base de datos o un superusuario puede cambiar los valores predeterminados de la sesión para una base de datos. Ciertas variables no pueden configurarse de esta manera, o solo pueden ser configuradas por un superusuario.

Parámetros

name

El nombre de la base de datos cuyos atributos se van a modificar.

allowconn

Si es falso, nadie podrá conectarse a esta base de datos.

connlimit

Cuántas conexiones concurrentes se pueden realizar a esta base de datos. -1 significa sin límite.

istemplate

Si es verdadero, cualquier usuario con privilegios CREATEDB podrá clonar esta base de datos; si es falso, solo los superusuarios o el propietario de la base de datos podrán clonarla.

new_name

El nuevo nombre de la base de datos.

new_owner

El nuevo propietario de la base de datos.

new_tablespace

El nuevo tablespace predeterminado de la base de datos.

Esta forma del comando no se puede ejecutar dentro de un bloque de transacción.

REFRESH COLLATION VERSION

Actualiza la versión de la intercalación de la base de datos. Consulta Notas para obtener más información.

configuration_parameter
value

Establece el valor predeterminado de la sesión de esta base de datos para el parámetro de configuración especificado al valor dado. Si el value es DEFAULT o, de manera equivalente, se usa RESET, se elimina la configuración específica de la base de datos, por lo que la configuración predeterminada de todo el sistema se heredará en las nuevas sesiones. Usa RESET ALL para borrar todas las configuraciones específicas de la base de datos. SET FROM CURRENT guarda el valor actual de la sesión del parámetro como el valor específico de la base de datos.

Consulta SET y Chapter 19 para obtener más información sobre los nombres y valores de parámetros permitidos.

Notas

También es posible asociar un valor predeterminado de sesión a un rol específico en lugar de a una base de datos; consulta ALTER ROLE. La configuración específica del rol anula la específica de la base de datos si existe un conflicto.

Ejemplos

Para desactivar los escaneos de índices de forma predeterminada en la base de datos test:

ALTER DATABASE test SET enable_indexscan TO off;

Compatibilidad

La sentencia ALTER DATABASE es una extensión de PostgreSQL.

Véase también

CREATE DATABASE, DROP DATABASE, SET, CREATE TABLESPACE