ALTER FUNCTION nome ( [ [ modo_do_argumento ] [ nome_do_argumento ] tipo_do_argumento [, ...] ] ) ação [, ... ] [ RESTRICT ] ALTER FUNCTION nome ( [ [ modo_do_argumento ] [ nome_do_argumento ] tipo_do_argumento [, ...] ] ) RENAME TO novo_nome ALTER FUNCTION nome ( [ [ modo_do_argumento ] [ nome_do_argumento ] tipo_do_argumento [, ...] ] ) OWNER TO novo_dono ALTER FUNCTION nome ( [ [ modo_do_argumento ] [ nome_do_argumento ] tipo_do_argumento [, ...] ] ) SET SCHEMA novo_esquema onde ação é um entre: CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT IMMUTABLE | STABLE | VOLATILE [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER
O comando ALTER FUNCTION altera a definição de uma função.
É necessário ser o dono da função para utilizar ALTER FUNCTION. Para mudar o esquema da função também é necessário possuir o privilégio CREATE no novo esquema. Para alterar o dono, também é necessário ser um membro direto ou indireto do novo papel (role) dono, e este papel deve possuir o privilégio CREATE no esquema da função (Estas restrições garantem que alterar o dono não faz nada que não poderia ser feito removendo e recriando a função. Entretanto, de qualquer forma, um superusuário sempre pode alterar o dono de qualquer função).
O nome (opcionalmente qualificado pelo esquema) de uma função existente.
O modo do argumento da função: um entre IN, OUT e INOUT. Se for omitido, o padrão é IN. Deve ser observado que, na verdade, o comando ALTER FUNCTION não presta nenhuma atenção aos argumentos OUT, uma vez que somente há necessidade dos argumentos de entrada para determinar a identidade da função. Portanto, basta listar os argumentos IN e INOUT.
O nome do argumento da função. Deve ser observado que, na verdade, o comando ALTER FUNCTION não presta nenhuma atenção aos nomes dos argumentos, uma vez que somente há necessidade dos tipos de dado dos argumentos para determinar a identidade da função.
O tipo de dado do argumento da função (opcionalmente qualificado pelo esquema), caso haja algum.
O novo nome da função.
O novo dono da função. Deve ser observado que, se a função estiver marcada com SECURITY DEFINER, esta será executada subseqüentemente com o novo dono.
O novo esquema da função.
CALLED ON NULL INPUT altera a função para que esta seja chamada quando algum ou todos os seus argumentos forem nulos. RETURNS NULL ON NULL INPUT ou STRICT altera a função para que esta não seja chamada se algum de seus argumentos for nulo; em vez disso, é assumido automaticamente um resultado nulo. Para obter mais informações deve ser consultado o comando CREATE FUNCTION.
Altera a volatilidade da função para a definição especificada. Para obter mais informações deve ser consultado o comando CREATE FUNCTION.
Altera se a função é definidora de segurança ou não. A palavra chave EXTERNAL é ignorada, existindo apenas por motivo de conformidade com o padrão SQL. Para obter mais informações sobre esta funcionalidade deve ser consultado o comando CREATE FUNCTION.
Ignorada, existindo apenas por motivo de conformidade com o padrão SQL.
Para mudar o nome da função sqrt para o tipo integer para raiz_quadrada:
ALTER FUNCTION sqrt(integer) RENAME TO raiz_quadrada;
Para mudar o dono da função sqrt para o tipo integer para joel:
ALTER FUNCTION sqrt(integer) OWNER TO joel;
Para mudar o esquema da função sqrt para o tipo integer para maths:
ALTER FUNCTION sqrt(integer) SET SCHEMA maths;
Este comando é parcialmente compatível com o comando ALTER FUNCTION do padrão SQL. O padrão permite que sejam modificadas mais propriedades da função, mas não fornece a funcionalidade de mudar o nome da função, tornar a função definidora de segurança, ou mudar o dono, o esquema ou a volatilidade da função. O padrão também requer a palavra chave RESTRICT, que é opcional no PostgreSQL.