ALTER FUNCTION

ALTER FUNCTION — Modifier la définition d'une fonction

Synopsis

ALTER FUNCTION nom ( [ [ modearg ] [ nomarg ] typearg [, ...] ] )
    action [ ... ] [ RESTRICT ]
ALTER FUNCTION nom ( [ [ modearg ] [ nomarg ] typearg [, ...] ] )
    RENAME TO nouveau_nom
ALTER FUNCTION nom ( [ [ modearg ] [ nomarg ] typearg [, ...] ] )
    OWNER TO { nouveau_propriétaire | CURRENT_USER | SESSION_USER }
ALTER FUNCTION nom ( [ [ modearg ] [ nomarg ] typearg [, ...] ] )
    SET SCHEMA nouveau_schema

action peut être :

    CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT
    IMMUTABLE | STABLE | VOLATILE | [ NOT ] LEAKPROOF
    [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER
    COST cout_execution
    ROWS nb_lignes_resultat
    SET parametre { TO | = } { valeur | DEFAULT }
    SET parametre FROM CURRENT
    RESET parametre
    RESET ALL
  

Description

ALTER FUNCTION modifie la définition d'une fonction.

Seul le propriétaire de la fonction peut utiliser ALTER FUNCTION. Le privilège CREATE sur le nouveau schéma est requis pour pouvoir changer le schéma de la fonction. Pour modifier le propriétaire, il est nécessaire d'être membre direct ou indirect du nouveau rôle propriétaire. Ce dernier doit posséder le droit CREATE sur le schéma de la fonction. Ces restrictions assurent que la modification du propriétaire n'a pas d'effets autres que ceux obtenus par la suppression et la re-création de la fonction ; toutefois, un superutilisateur peut modifier le propriétaire de n'importe quelle fonction.

Paramètres

nom

Le nom de la fonction.

modearg

Le mode d'un argument : IN, OUT, INOUT ou VARIADIC. En cas d'omission, la valeur par défaut est IN. ALTER FUNCTION ne tient pas compte des arguments OUT, car seuls les arguments en entrée sont nécessaire pour déterminer l'identité de la fonction. Les arguments IN, INOUT et VARIADIC sont donc suffisants.

nomarg

Le nom d'un argument. ALTER FUNCTION ne tient pas compte des noms des arguments, car seuls les types de données des arguments sont nécessaires pour déterminer l'identité d'une fonction.

typearg

Le(s) type(s) de données des arguments de la fonction (éventuellement qualifié(s) du nom du schéma).

nouveau_nom

Le nouveau nom de la fonction.

nouveau_proprietaire

Le nouveau propriétaire de la fonction. Si cette fonction est marquée SECURITY DEFINER, elle s'exécute par la suite sous cette identité.

nouveau_schema

Le nouveau schéma de la fonction.

CALLED ON NULL INPUT, RETURNS NULL ON NULL INPUT, STRICT

CALLED ON NULL INPUT modifie la fonction pour qu'elle puisse être appelée avec des arguments NULL. RETURNS NULL ON NULL INPUT et STRICT modifie la fonction pour qu'elle ne soit pas appelée si un des arguments est NULL ; un résultat NULL est alors automatiquement déterminé. Voir CREATE FUNCTION(7) pour plus d'informations.

IMMUTABLE, STABLE, VOLATILE

Modifie la volatilité de la fonction. Voir CREATE FUNCTION(7) pour plus d'informations.

[ EXTERNAL ] SECURITY INVOKER, [ EXTERNAL ] SECURITY DEFINER

Précise si la fonction doit être appelée avec les droits de l'utilisateur qui l'a créée. Le mot clé EXTERNAL, ignoré, existe pour des raisons de compatibilité SQL. Voir CREATE FUNCTION(7) pour plus d'informations.

LEAKPROOF

Indique si la fonction doit être considérée comme étant étanche (leakproof). Voir CREATE FUNCTION(7) pour plus d'informations.

COST cout_execution

Modifie l'estimation du coût d'exécution de la fonction. Voir CREATE FUNCTION(7) pour plus d'informations.

ROWS nb_lignes_resultat

Modifie l'estimation du nombre de lignes renvoyées par une fonction SRF. Voir CREATE FUNCTION(7) pour plus d'informations.

parametre, valeur

Ajoute ou modifie l'initialisation d'un paramètre de configuration lorsque la fonction est appelée. Si valeur est DEFAULT ou, de façon équivalente, si RESET est utilisé, le paramètre local de la fonction est supprimée pour que la fonction s'exécute avec la valeur par défaut du paramètre. Utiliser RESET ALL supprime tous les valeurs spécifiques des paramètres pour cette fonction. SET FROM CURRENT sauvegarde la valeur courante comme valeur du paramètre à appliquer lors de l'exécution de la fonction.

Voir SET(7) et Chapitre 18, Configuration du serveur pour plus d'informations sur les noms des paramètres et les valeurs autorisés.

RESTRICT

Ignoré, présent pour des raisons de conformité avec le standard SQL.

Exemples

Renommer la fonction sqrt pour le type integer en square_root :

ALTER FUNCTION sqrt(integer) RENAME TO square_root;
   

Changer le propriétaire de la fonction sqrt pour le type integer en joe :

ALTER FUNCTION sqrt(integer) OWNER TO joe;
   

Modifier le schéma de la fonction sqrt du type integer par maths :

ALTER FUNCTION sqrt(integer) SET SCHEMA maths;
   

Pour ajuster automatiquement le chemin de recherche des schémas pour une fonction :

ALTER FUNCTION verifie_motdepasse(text) SET search_path = admin, pg_temp;
   

Pour désactiver le paramètre search_path d'une fonction :

ALTER FUNCTION verifie_motdepasse(text) RESET search_path;
   

La fonction s'exécutera maintenant avec la valeur de la session pour cette variable.

Compatibilité

La compatibilité de cette instruction avec l'instruction ALTER FUNCTION du standard SQL est partielle. Le standard autorise la modification d'un plus grand nombre de propriétés d'une fonction mais ne laisse pas la possibilité de renommer une fonction, de placer le commutateur SECURITY DEFINER sur la fonction, d'y attacher des valeurs de paramètres ou d'en modifier le propriétaire, le schéma ou la volatilité. Le standard requiert le mot clé RESTRICT ; il est optionnel avec PostgreSQL™.

Voir aussi

CREATE FUNCTION(7), DROP FUNCTION(7)