ALTER FUNCTION

ALTER FUNCTION — modifica a definição de uma função

Sinopse

ALTER FUNCTION nome [ ( [ [ modo_do_argumento ]​
    [ nome_do_argumento ] tipo_de_dados_do_argumento [, ...] ] ) ]
    ação [ ... ] [ RESTRICT ]
ALTER FUNCTION nome [ ( [ [ modo_do_argumento ]​
    [ nome_do_argumento ] tipo_de_dados_do_argumento [, ...] ] ) ]
    RENAME TO novo_nome
ALTER FUNCTION nome [ ( [ [ modo_do_argumento ]​
    [ nome_do_argumento ] tipo_de_dados_do_argumento [, ...] ] ) ]
    OWNER TO {
        novo_dono
      | CURRENT_ROLE
      | CURRENT_USER
      | SESSION_USER
    }
ALTER FUNCTION nome [ ( [ [ modo_do_argumento ]​
    [ nome_do_argumento ] tipo_de_dados_do_argumento [, ...] ] ) ]
    SET SCHEMA novo_esquema
ALTER FUNCTION nome [ ( [ [ modo_do_argumento ]​
    [ nome_do_argumento ] tipo_de_dados_do_argumento [, ...] ] ) ]
    [ NO ] DEPENDS ON EXTENSION nome_da_extensão

onde açã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 }
    COST custo_de_execução
    ROWS linhas_de_resultado
    SUPPORT função_de_suporte
    SET parâmetro_de_configuração { TO | = } { valor | DEFAULT }
    SET parâmetro_de_configuração FROM CURRENT
    RESET parâmetro_de_configuração
    RESET ALL

Descrição

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.)

Parâmetros

nome

O 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_argumento

Os tipos de dados dos argumentos da função (opcionalmente qualificados pelo esquema), se houver.

novo_nome

O 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_esquema

O novo esquema para a função.

DEPENDS ON EXTENSION nome_da_extensão
NO 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 INPUT
RETURNS NULL ON NULL INPUT
STRICT

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.

IMMUTABLE
STABLE
VOLATILE

Altera 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.

PARALLEL

Altera se a função é considerada segura para paralelismo. Veja CREATE FUNCTION para obter mais informações sobre este recurso.

LEAKPROOF

Altera 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ção

Altera o custo de execução estimado da função. Veja CREATE FUNCTION para obter mais informações.

ROWS linhas_de_resultado

Altera 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_suporte

Define 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ção
valor

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.

RESTRICT

Ignorado, só para manter a compatibilidade com o padrão.

Exemplos

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.

Conformidade

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.

Veja também

CREATE FUNCTION, DROP FUNCTION, ALTER PROCEDURE, ALTER ROUTINE