ALTER FUNCTION — cambiar la definición de una función
ALTER FUNCTIONname[ ( [ [argmode] [argname]argtype[, ...] ] ) ]action[ ... ] [ RESTRICT ] ALTER FUNCTIONname[ ( [ [argmode] [argname]argtype[, ...] ] ) ] RENAME TOnew_nameALTER FUNCTIONname[ ( [ [argmode] [argname]argtype[, ...] ] ) ] OWNER TO {new_owner| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER FUNCTIONname[ ( [ [argmode] [argname]argtype[, ...] ] ) ] SET SCHEMAnew_schemaALTER FUNCTIONname[ ( [ [argmode] [argname]argtype[, ...] ] ) ] [ NO ] DEPENDS ON EXTENSIONextension_namedondeactionpuede ser uno de los siguientes: CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT IMMUTABLE | STABLE | VOLATILE [ NOT ] LEAKPROOF [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER PARALLEL { UNSAFE | RESTRICTED | SAFE } COSTexecution_costROWSresult_rowsSUPPORTsupport_functionSETconfiguration_parameter{ TO | = } {value| DEFAULT } SETconfiguration_parameterFROM CURRENT RESETconfiguration_parameterRESET ALL
ALTER FUNCTION cambia la definición de una
función.
Debes ser el propietario de la función para usar ALTER FUNCTION.
Para cambiar el esquema de una función, también debes tener el privilegio CREATE
en el nuevo esquema. Para alterar el propietario, debes poder hacer
SET ROLE al nuevo rol propietario, y ese rol debe
tener el privilegio CREATE en
el esquema de la función. (Estas restricciones garantizan que al cambiar el propietario
no puedas hacer nada que no pudieras hacer eliminando y recreando la función.
Sin embargo, un superusuario puede cambiar la propiedad de cualquier función de todos modos).
nameEl nombre (opcionalmente calificado por esquema) de una función existente. Si no se especifica una lista de argumentos, el nombre debe ser único en su esquema.
argmode
El modo de un argumento: IN, OUT,
INOUT o VARIADIC.
Si se omite, el valor predeterminado es IN.
Ten en cuenta que ALTER FUNCTION en realidad no presta
atención a los argumentos OUT, ya que solo se necesitan los
argumentos de entrada para determinar la identidad de la función.
Por lo tanto, es suficiente listar los argumentos IN, INOUT
y VARIADIC.
argname
El nombre de un argumento.
Ten en cuenta que ALTER FUNCTION no presta atención
en realidad a los nombres de los argumentos, ya que solo se necesitan los tipos
de datos de los argumentos para determinar la identidad de la función.
argtypeEl tipo o tipos de datos de los argumentos de la función (opcionalmente calificados por esquema), si los hay.
new_nameEl nuevo nombre de la función.
new_owner
El nuevo propietario de la función. Ten en cuenta que si la función está
marcada como SECURITY DEFINER, se ejecutará posteriormente
con los privilegios del nuevo propietario.
new_schemaEl nuevo esquema para la función.
DEPENDS ON EXTENSION extension_nameNO DEPENDS ON EXTENSION extension_name
Esta forma marca la función como dependiente de la extensión, o ya no
dependiente de esa extensión si se especifica NO.
Una función marcada como dependiente de una extensión se elimina cuando se elimina la
extensión, incluso si no se especifica CASCADE.
Una función puede depender de múltiples extensiones y se eliminará cuando
cualquiera de ellas se elimine.
CALLED ON NULL INPUTRETURNS NULL ON NULL INPUTSTRICTCALLED ON NULL INPUT cambia la función para
que sea invocada cuando algunos o todos sus argumentos sean
nulos. RETURNS NULL ON NULL INPUT o
STRICT cambian la función para que no sea
invocada si alguno de sus argumentos es nulo; en su lugar, se asume
automáticamente un resultado nulo. Consulta CREATE FUNCTION
para obtener más información.
IMMUTABLESTABLEVOLATILECambia la volatilidad de la función a la configuración especificada. Consulta CREATE FUNCTION para obtener más detalles.
[ EXTERNAL ] SECURITY INVOKER[ EXTERNAL ] SECURITY DEFINER
Cambia si la función define la seguridad (security definer) o no. La
palabra clave EXTERNAL se ignora para la
conformidad con SQL. Consulta CREATE FUNCTION para obtener más información sobre
esta capacidad.
PARALLELCambia si la función se considera segura para el paralelismo. Consulta CREATE FUNCTION para obtener más detalles.
LEAKPROOFCambia si la función se considera a prueba de filtraciones (leakproof) o no. Consulta CREATE FUNCTION para obtener más información sobre esta capacidad.
COST execution_costCambia el costo estimado de ejecución de la función. Consulta CREATE FUNCTION para obtener más información.
ROWS result_rowsCambia el número estimado de filas devueltas por una función que devuelve un conjunto. Consulta CREATE FUNCTION para obtener más información.
SUPPORT support_functionEstablece o cambia la función de soporte del planificador que se utilizará para esta función. Consulta la Section 36.11 para obtener más detalles. Debes ser superusuario para utilizar esta opción.
Esta opción no se puede utilizar para eliminar la función de soporte por completo,
ya que debe nombrar una nueva función de soporte. Usa CREATE OR
REPLACE FUNCTION si necesitas hacer eso.
configuration_parametervalue
Agrega o cambia la asignación que se realizará a un parámetro de configuración
cuando se llame a la función. Si el
value es DEFAULT
o, de manera equivalente, se usa RESET, se elimina la configuración
local de la función, de modo que la función se ejecute con el valor
presente en su entorno. Usa RESET
ALL para borrar todas las configuraciones locales de la función.
SET FROM CURRENT guarda el valor del parámetro que
está activo cuando se ejecuta ALTER FUNCTION como el valor
que se aplicará al ingresar a la función.
Consulta SET y Chapter 19 para obtener más información sobre los nombres y valores de parámetros permitidos.
RESTRICTSe ignora para la conformidad con el estándar SQL.
Para renombrar la función sqrt para el tipo
integer a square_root:
ALTER FUNCTION sqrt(integer) RENAME TO square_root;
Para cambiar el propietario de la función sqrt para el tipo
integer a joe:
ALTER FUNCTION sqrt(integer) OWNER TO joe;
Para cambiar el esquema de la función sqrt para el tipo
integer a maths:
ALTER FUNCTION sqrt(integer) SET SCHEMA maths;
Para marcar la función sqrt para el tipo
integer como dependiente de la extensión
mathlib:
ALTER FUNCTION sqrt(integer) DEPENDS ON EXTENSION mathlib;
Para ajustar la ruta de búsqueda (search path) que se establece automáticamente para una función:
ALTER FUNCTION check_password(text) SET search_path = admin, pg_temp;
Para desactivar la configuración automática de search_path para una función:
ALTER FUNCTION check_password(text) RESET search_path;
La función ahora se ejecutará con cualquier ruta de búsqueda que utilice su invocador.
Esta sentencia es parcialmente compatible con la sentencia ALTER
FUNCTION del estándar SQL. El estándar permite modificar más
propiedades de una función, pero no proporciona la capacidad de renombrar una función,
hacer que una función sea security definer, asociar valores de parámetros de configuración
a una función, o cambiar el propietario, el esquema o la volatilidad de una función.
El estándar también requiere la palabra clave RESTRICT, la cual es
opcional en PostgreSQL.