ALTER AGGREGATE — Modifier la définition d'une fonction d'agrégat
+ALTER AGGREGATEnom(signature_agrégat) RENAME TOnouveau_nomALTER AGGREGATEnom(signature_agrégat) OWNER TO {nouveau_propriétaire| CURRENT_USER | SESSION_USER } ALTER AGGREGATEnom(signature_agrégat) SET SCHEMAnouveau_schémawheresignature_agrégatis: * | [mode_arg] [nom_arg]type_arg[ , ... ] | [ [mode_arg] [nom_arg]type_arg[ , ... ] ] ORDER BY [mode_arg] [nom_arg]type_arg[ , ... ]
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 superutilisateur
peut modifier la possession de n'importe quelle fonction d'agrégat.
nomLe 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_nomLe nouveau nom de la fonction d'agrégat.
nouveau_propriétaireLe nouveau propriétaire de la fonction d'agrégat.
nouveau_schemaLe nouveau schéma de la fonction d'agrégat.
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.
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;
Il n'y a pas de commande ALTER AGGREGATE dans le
standard SQL.