ALTER FUNCTION — Modifier la définition d'une fonction
ALTER FUNCTIONnom[ ( [ [mode_arg] [nom_arg]type_arg[, ...] ] ) ]action[ ... ] [ RESTRICT ] ALTER FUNCTIONnom[ ( [ [mode_arg] [nom_arg]type_arg[, ...] ] ) ] REnom TOnouveau_nomALTER FUNCTIONnom[ ( [ [mode_arg] [nom_arg]type_arg[, ...] ] ) ] OWNER TO {nouveau_proprietaire| CURRENT_USER | SESSION_USER } ALTER FUNCTIONnom[ ( [ [mode_arg] [nom_arg]type_arg[, ...] ] ) ] SET SCHEMAnouveau_schemaALTER FUNCTIONnom[ ( [ [mode_arg] [nom_arg]type_arg[, ...] ] ) ] [ NO ] DEPENDS ON EXTENSIONnom_extensionoùactionpeut être : CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT IMMUTABLE | STABLE | VOLATILE [ NOT ] LEAKPROOF [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER PARALLEL { UNSAFE | RESTRICTED | SAFE } COSTcout_executionROWSnb_lignes_resultatSUPPORTsupport_functionSETparametre{ TO | = } {valeur| DEFAULT } SETparametreFROM CURRENT RESETparametreRESET ALL
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.
nomLe nom de la fonction (potentiellement qualifié du nom du schéma). Si aucune liste d'argument n'est spécifiée, le nom doit être unique dans son schéma.
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.
typeargLe(s) type(s) de données des arguments de la fonction (éventuellement qualifié(s) du nom du schéma).
nouveau_nomLe 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_schemaLe nouveau schéma de la fonction.
DEPENDS ON EXTENSION nom_extensionNO DEPENDS ON EXTENSION nom_extension
Cette clause marque la fonction comme dépendante de l'extension ou comme
indépendante de l'extension si le mot-clé NO est
ajouté. Une fonction dépendante d'une extension est supprimée quand
l'extension est supprimée, même si la clause CASCADE
n'est pas indiquée. Une fonction peut dépendre de plusieurs extensions, et
est supprimé quand une de ces extensions est supprimée.
CALLED ON NULL INPUTRETURNS NULL ON NULL INPUTSTRICT
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
pour plus d'informations.
IMMUTABLESTABLEVOLATILEModifie la volatilité de la fonction. Voir CREATE FUNCTION 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 pour plus
d'informations.
PARALLELIndique si la fonction peut être exécutée en parallèle. Voir CREATE FUNCTION pour les détails.
LEAKPROOFIndique si la fonction doit être considérée comme étant étanche (leakproof). Voir CREATE FUNCTION pour plus d'informations.
COST cout_executionModifie l'estimation du coût d'exécution de la fonction. Voir CREATE FUNCTION pour plus d'informations.
ROWS nb_lignes_resultatModifie l'estimation du nombre de lignes renvoyées par une fonction SRF. Voir CREATE FUNCTION pour plus d'informations.
SUPPORT support_functionFournit une fonction de support de planification utilisable pour cette fonction. Voir Section 37.11 pour plus d'informations. Il faut être superutilisateur pour utiliser cette option.
Cette option ne peut pas être utilisée pour supprimer la fonction de support,
parce qu'elle doit indiquer une nouvelle fonction de support. Si vous avez besoin
de faire cela, utilisez CREATE OR REPLACE FUNCTION.
parametrevaleur
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 actuelle du
paramètre quand ALTER FUNCTION est exécuté comme
valeur à appliquer lors de l'exécution de la fonction.
Voir SET et Chapitre 19 pour plus d'informations sur les noms des paramètres et les valeurs autorisés.
RESTRICTIgnoré, présent pour des raisons de conformité avec le standard SQL.
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 marquer la fonction sqrt du type
integer comme dépendant de l'extension
mathlib :
ALTER FUNCTION sqrt(integer) DEPENDS ON EXTENSION mathlib;
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.
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.