Documentation PostgreSQL 14.22 » Référence » Commandes SQL » ALTER AGGREGATE

Précédent | Niveau supérieur | Suivant
ABORT | Sommaire | ALTER COLLATION

## ALTER AGGREGATE

ALTER AGGREGATE — Modifier la définition d'une fonction d'agrégat

## Synopsis

    ALTER AGGREGATE nom ( signature_agrégat ) RENAME TO nouveau_nom
    ALTER AGGREGATE nom ( signature_agrégat )
                    OWNER TO { nouveau_propriétaire | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
    ALTER AGGREGATE nom ( signature_agrégat ) SET SCHEMA nouveau_schéma

    where signature_agrégat is:

    * |
    [ mode_arg ] [ nom_arg ] type_arg [ , ... ] |
    [ [ mode_arg ] [ nom_arg ] type_arg [ , ... ] ] ORDER BY [ mode_arg ] [ nom_arg ] type_arg [ , ... ]

## Description

`ALTER AGGREGATE` change la définition d'une fonction d'agrégat.

Seul le propriétaire de la fonction d'agrégat peut utiliser `ALTER AGGREGATE`. Pour modifier le schéma d'une fonction d'agrégat, il est nécessaire de posséder le droit `CREATE` sur le nouveau schéma. Pour modifier le propriétaire de la fonction, il faut être un membre direct ou indirect du nouveau rôle propriétaire, rôle qui doit en outre posséder le droit `CREATE` sur le schéma de la fonction d'agrégat. Ces restrictions assurent que la modification du propriétaire ne permet pas d'aller au-delà de ce que permet la suppression et la recréation d'une fonction d'agrégat. Toutefois, un super-utilisateur peut modifier la possession de n'importe quelle fonction d'agrégat.

## Paramètres

`nom`

  Le nom (éventuellement qualifié du nom du schéma) de la fonction d'agrégat.

`mode_arg`

  Le mode d'un argument : `IN` or `VARIADIC`. La valeur par défaut est `IN`.

`nom_arg`

  Le nom d'un argument. Notez que `ALTER AGGREGATE` ne fait pas réellement attention aux noms des arguments car seuls les types de données des arguments sont nécessaires pour déterminer l'identité de la fonction d'agrégat.

`type_arg`

  Un type de données en entrée sur lequel la fonction d'agrégat opère. Pour référencer une fonction d'agrégat sans argument, écrivez `*` à la place de la liste des argument specifications. Pour référencer une fonction d'agrégat avec ensemble trié, ajoutez `ORDER BY` entre les spécifications des arguments direct et agrégé.

`nouveau_nom`

  Le nouveau nom de la fonction d'agrégat.

`nouveau_propriétaire`

  Le nouveau propriétaire de la fonction d'agrégat.

`nouveau_schema`

  Le nouveau schéma de la fonction d'agrégat.

## Notes

La syntaxe recommandée pour référencer un agrégat dont l'ensemble est trié revient à écrire `ORDER BY` entre les spécifications de l'argument direct et de l'argument agrégé, dans le même style que `CREATE AGGREGATE`. Néanmoins, cela fonctionnera aussi d'omettre `ORDER BY` en plaçant uniquement les spécifications de l'argument direct et de l'argument agrégé. Dans cette forme abréviée, si `VARIADIC "any"` a été utilisé à la fois dans l'argument direct et l'argument agrégé, écrire `VARIADIC "any"` seulement une fois.

## Exemples

Renommer la fonction d'agrégat `mamoyenne` de type `integer` en `ma_moyenne` :

    ALTER AGGREGATE mamoyenne(integer) RENAME TO ma_moyenne;

Changer le propriétaire de la fonction d'agrégat `mamoyenne` de type `integer` en `joe` :

    ALTER AGGREGATE mamoyenne(integer) OWNER TO joe;

Pour déplacer l'agrégat `mon_pourcentage` dont l'argument direct est de type `float8` et l'argument agrégé de type `integer` dans le schéma `mon_schema` :

    ALTER AGGREGATE mamoyenne(integer) SET SCHEMA mon_schema;
    ALTER AGGREGATE mon_pourcentage(float8 ORDER BY integer) SET SCHEMA mon_schema;

Ceci fonctionne aussi :

    ALTER AGGREGATE mon_pourcentage(float8, integer) SET SCHEMA mon_schema;

## Compatibilité

Il n'y a pas de commande `ALTER AGGREGATE` dans le standard SQL.

## Voir aussi

CREATE AGGREGATE, DROP AGGREGATE