ALTER DATABASE — modificar una base de datos
ALTER DATABASEname[ [ WITH ]option[ ... ] ] dondeoptionpuede ser: ALLOW_CONNECTIONSallowconnCONNECTION LIMITconnlimitIS_TEMPLATEistemplateALTER DATABASEnameRENAME TOnew_nameALTER DATABASEnameOWNER TO {new_owner| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER DATABASEnameSET TABLESPACEnew_tablespaceALTER DATABASEnameREFRESH COLLATION VERSION ALTER DATABASEnameSETconfiguration_parameter{ TO | = } {value| DEFAULT } ALTER DATABASEnameSETconfiguration_parameterFROM CURRENT ALTER DATABASEnameRESETconfiguration_parameterALTER DATABASEnameRESET ALL
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.
nameEl nombre de la base de datos cuyos atributos se van a modificar.
allowconnSi es falso, nadie podrá conectarse a esta base de datos.
connlimitCuá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_nameEl nuevo nombre de la base de datos.
new_ownerEl nuevo propietario de la base de datos.
new_tablespaceEl 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 VERSIONActualiza la versión de la intercalación de la base de datos. Consulta Notas para obtener más información.
configuration_parametervalue
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.
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.
Para desactivar los escaneos de índices de forma predeterminada en la base de datos
test:
ALTER DATABASE test SET enable_indexscan TO off;
La sentencia ALTER DATABASE es una extensión
de PostgreSQL.