ALTER AGGREGATE

ALTER AGGREGATE — modifica a definição de uma função de agregação

Sinopse

ALTER AGGREGATE nome ( assinatura_da_agregação )
    RENAME TO novo_nome
ALTER AGGREGATE nome ( assinatura_da_agregação )
    OWNER TO {
        novo_dono
      | CURRENT_ROLE
      | CURRENT_USER
      | SESSION_USER
    }
ALTER AGGREGATE nome ( assinatura_da_agregação )
    SET SCHEMA novo_esquema

onde assinatura_da_agregação é:

* |
[ modo_do_argumento ] [ nome_do_argumento ] tipo_de_dados_do_argumento
[ , ... ]
|
[ [ modo_do_argumento ] [ nome_do_argumento ] tipo_de_dados_do_argumento
[ , ... ] ]
ORDER BY [ modo_do_argumento ] [ nome_do_argumento ] tipo_de_dados_do_argumento
[ , ... ]

Descrição

O comando ALTER AGGREGATE modifica a definição de uma função de agregação.

É necessário ser o dono da função de agregação para poder executar o comando ALTER AGGREGATE. Para alterar o esquema da função de agregaçã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 de agregaçã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 de agregação. Entretanto, um superusuário pode alterar o dono de qualquer função de agregação.)

Parâmetros

nome

O nome (opcionalmente qualificado pelo esquema) da função de agregação existente.

modo_do_argumento

O modo do argumento: IN ou VARIADIC. Se omitido, o padrão é IN.

nome_do_argumento

O nome do argumento. Note que o comando ALTER AGGREGATE não presta atenção aos nomes dos argumentos, porque são necessários apenas os tipos de dados dos argumentos para determinar a identidade da função de agregação.

tipo_de_dados_do_argumento

O tipo de dados de entrada no qual a função de agregação opera. Para fazer referência a uma função de agregação de argumento zero, deve ser escrito * no lugar da lista de especificações de argumento. Para fazer referência a uma função de agregação de conjunto ordenado, deve ser escrito ORDER BY entre as especificações de argumento direto e agregado.

novo_nome

O novo nome da função de agregação.

novo_dono

O novo dono da função de agregação.

novo_esquema

O novo esquema para a função de agregação.

Notas

A sintaxe recomendada para referenciar uma agregação de conjunto ordenado é escrever ORDER BY entre as especificações de argumento direto e agregado, no mesmo estilo de CREATE AGGREGATE. Entretanto, também funciona omitir ORDER BY e apenas colocar as especificações de argumento direto e agregado em uma única lista. Nesta forma abreviada, se for usado VARIADIC "any" tanto nos argumentos diretos quanto nos argumentos agregados, deve ser escrito VARIADIC "any" apenas uma vez.

Exemplos

Para renomear a função de agregação myavg do tipo integer para my_average:

ALTER AGGREGATE myavg(integer) RENAME TO my_average;

Para mudar o dono da função de agregação myavg do tipo integer para joe:

ALTER AGGREGATE myavg(integer) OWNER TO joe;

Para mover a agregação de conjunto ordenado mypercentile com argumento direto do tipo float8 e argumento agregado do tipo integer para o esquema myschema:

ALTER AGGREGATE mypercentile(float8 ORDER BY integer) SET SCHEMA myschema;

Funciona também assim:

ALTER AGGREGATE mypercentile(float8, integer) SET SCHEMA myschema;

Conformidade

Não existe o comando ALTER AGGREGATE no padrão SQL.

Veja também

CREATE AGGREGATE, DROP AGGREGATE