ALTER FUNCTION — modifica a definição de uma função
ALTER FUNCTIONnome[ ( [ [modo_do_argumento] [nome_do_argumento]tipo_de_dados_do_argumento[, ...] ] ) ]ação[ ... ] [ RESTRICT ] ALTER FUNCTIONnome[ ( [ [modo_do_argumento] [nome_do_argumento]tipo_de_dados_do_argumento[, ...] ] ) ] RENAME TOnovo_nomeALTER FUNCTIONnome[ ( [ [modo_do_argumento] [nome_do_argumento]tipo_de_dados_do_argumento[, ...] ] ) ] OWNER TO {novo_dono| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER FUNCTIONnome[ ( [ [modo_do_argumento] [nome_do_argumento]tipo_de_dados_do_argumento[, ...] ] ) ] SET SCHEMAnovo_esquemaALTER FUNCTIONnome[ ( [ [modo_do_argumento] [nome_do_argumento]tipo_de_dados_do_argumento[, ...] ] ) ] [ NO ] DEPENDS ON EXTENSIONnome_da_extensãoondeaçãoé uma entre: 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 } COSTcusto_de_execuçãoROWSlinhas_de_resultadoSUPPORTfunção_de_suporteSETparâmetro_de_configuração{ TO | = } {valor| DEFAULT } SETparâmetro_de_configuraçãoFROM CURRENT RESETparâmetro_de_configuraçãoRESET ALL
O comando ALTER FUNCTION modifica a definição
de uma função.
É necessário ser o dono da função para poder executar o comando
ALTER FUNCTION.
Para alterar o esquema da função, também é necessário possuir o
privilégio CREATE no novo esquema.
Para alterar o dono, é necessário ser capaz de executar o comando
SET ROLE para a função de banco de dados
(role) que será a nova dona,
e esta função de banco de dados precisa possuir o privilégio
CREATE no esquema da função.
(Estas restrições impõem que alterar o dono não faz nada que
não poderia ser feito excluindo e recriando a função.
Entretanto, um superusuário pode alterar o dono de qualquer
função.)
nomeO nome (opcionalmente qualificado pelo esquema) da função existente. Se não for especificada nenhuma lista de argumentos, o nome deverá ser único em seu esquema.
modo_do_argumento
O modo do argumento: IN, OUT,
INOUT, ou VARIADIC.
Se omitido, o padrão é IN.
Note que o comando ALTER FUNCTION não presta
atenção aos argumentos OUT, porque apenas os
argumentos de entrada são necessários para determinar a identidade
da função.
Portanto, basta listar os argumentos IN,
INOUT, e VARIADIC.
nome_do_argumento
O nome do argumento.
Note que o comando ALTER FUNCTION, na verdade,
não presta atenção aos nomes dos argumentos, porque apenas os
tipos de dados dos argumentos são necessários para determinar
a identidade da função.
tipo_de_dados_do_argumentoOs tipos de dados dos argumentos da função (opcionalmente qualificados pelo esquema), se houver.
novo_nomeO novo nome da função.
novo_dono
O novo dono da função.
Note que se a função estiver marcada como
SECURITY DEFINER, ela será executada
subsequentemente com o novo dono.
novo_esquemaO novo esquema para a função.
DEPENDS ON EXTENSION nome_da_extensãoNO DEPENDS ON EXTENSION nome_da_extensão
Esta forma marca a função como dependente da extensão, ou não
mais dependente dessa extensão se for especificado
NO.
Uma função marcada como dependente de uma extensão é removida
quando a extensão é removida, mesmo que não seja especificado
CASCADE.
Uma função pode ser dependente de várias extensões, sendo removida
quando qualquer uma dessas extensões for removida.
CALLED ON NULL INPUTRETURNS NULL ON NULL INPUTSTRICT
A cláusula CALLED ON NULL INPUT altera a
função para ser chamada mesmo quando alguns ou todos os
seus argumentos forem nulos.
A cláusula RETURNS NULL ON NULL INPUT ou
STRICT altera a função para não ser
chamada se algum de seus argumentos for nulo; em vez disso,
o resultado nulo é assumido automaticamente.
Veja CREATE FUNCTION para obter mais
informações.
IMMUTABLESTABLEVOLATILEAltera a volatilidade da função para a configuração especificada. Veja CREATE FUNCTION para obter mais informações.
[ EXTERNAL ] SECURITY INVOKER[ EXTERNAL ] SECURITY DEFINER
Altera se a função é SECURITY DEFINER, ou não.
A palavra-chave EXTERNAL é permitida para
manter a conformidade com o padrão SQL.
Veja CREATE FUNCTION para obter mais
informações sobre este recurso.
PARALLELAltera se a função é considerada segura para paralelismo. Veja CREATE FUNCTION para obter mais informações sobre este recurso.
LEAKPROOFAltera se a função é considerada à prova de vazamentos ou não. Veja CREATE FUNCTION para obter mais informações sobre este recurso.
COST custo_de_execuçãoAltera o custo de execução estimado da função. Veja CREATE FUNCTION para obter mais informações.
ROWS linhas_de_resultadoAltera o número estimado de linhas retornadas por uma função retornando conjunto. Veja CREATE FUNCTION para obter mais informações.
SUPPORT função_de_suporteDefine ou altera a função de suporte do planejador a ser usada para esta função. Veja Informações sobre otimização de funções para obter mais informações. É necessário ser um superusuário para usar esta opção.
Esta cláusula não pode ser usada para remover inteiramente a
função de suporte, porque deve indicar uma nova função de suporte.
Deve ser usado CREATE OR REPLACE FUNCTION
se for necessário fazer isto.
parâmetro_de_configuraçãovalor
Adiciona ou altera a atribuição a ser feita a um parâmetro de
configuração quando a função for chamada.
Se valor for DEFAULT
ou, de forma equivalente, for usado RESET,
a configuração local da função é removida, para que a função
seja executada com o valor presente no ambiente.
Deve ser usado RESET ALL para limpar todas
as definições locais da função.
A cláusula SET FROM CURRENT salva o valor
corrente do parâmetro quando ALTER FUNCTION é
executado como o valor a ser aplicado quando a função é chamada.
Veja SET e Configuração do servidor para obter mais informações sobre nomes e valores de parâmetros permitidos.
RESTRICTIgnorado, só para manter a compatibilidade com o padrão.
Para alterar o nome da função sqrt do tipo de dados
integer para square_root:
ALTER FUNCTION sqrt(integer) RENAME TO square_root;
Para alterar o dono da função sqrt do tipo de dados
integer para joe:
ALTER FUNCTION sqrt(integer) OWNER TO joe;
Para alterar o esquema da função sqrt do
tipo de dados integer para maths:
ALTER FUNCTION sqrt(integer) SET SCHEMA maths;
Para marcar a função sqrt para o tipo de dados
integer como dependente da extensão
mathlib:
ALTER FUNCTION sqrt(integer) DEPENDS ON EXTENSION mathlib;
Para ajustar o caminho de procura definido automaticamente para uma função:
ALTER FUNCTION check_password(text) SET search_path = admin, pg_temp;
Para desativar a configuração automática de
search_path para uma função:
ALTER FUNCTION check_password(text) RESET search_path;
A função agora será executada com qualquer caminho de procura usado por seu chamador.
Este comando é parcialmente compatível com o comando
ALTER FUNCTION do padrão SQL.
O padrão permite que sejam alteradas mais propriedades de uma função,
mas não fornece a capacidade de alterar o nome da função, tornar a
função SECURITY DEFINER, anexar valores de
parâmetro de configuração a uma função, ou alterar o dono, esquema
ou volatilidade da função.
O padrão também requer a palavra-chave RESTRICT,
opcional no PostgreSQL.