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_nom
ALTER FUNCTIONnom
[ ( [ [mode_arg
] [nom_arg
]type_arg
[, ...] ] ) ] OWNER TO {nouveau_propriétaire
| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER FUNCTIONnom
[ ( [ [mode_arg
] [nom_arg
]type_arg
[, ...] ] ) ] SET SCHEMAnouveau_schéma
ALTER FUNCTIONnom
[ ( [ [mode_arg
] [nom_arg
]type_arg
[, ...] ] ) ] [ NO ] DEPENDS ON EXTENSIONnom_extension
oùaction
peut ê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_exécution
ROWSnb_lignes_résultat
SUPPORTsupport_function
SETparamètre
{ TO | = } {valeur
| DEFAULT } SETparamètre
FROM CURRENT RESETparamètre
RESET ALL
ALTER FUNCTION
modifie la définition d'une fonction.
Seul le propriétaire de la fonction peut utiliser ALTER
FUNCTION
. Le droit CREATE
sur le nouveau schéma
est requis pour pouvoir changer le schéma de la fonction.
Pour modifier le propriétaire, vous devez être capable d'utiliser
SET ROLE
vers le nouveau rôle propriétaire, et ce rôle doit
avoir 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.
nom
Le 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.
typearg
Le type de données d'un argument de la fonction (éventuellement qualifié du nom du schéma).
nouveau_nom
Le nouveau nom de la fonction.
nouveau_propriétaire
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_schéma
Le nouveau schéma de la fonction.
DEPENDS ON EXTENSION nom_extension
NO 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 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 pour plus d'informations.
IMMUTABLE
STABLE
VOLATILE
Modifie 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.
PARALLEL
Indique si la fonction peut être exécutée en parallèle. Voir CREATE FUNCTION pour les détails.
LEAKPROOF
Indique si la fonction doit être considérée comme étant étanche (leakproof). Voir CREATE FUNCTION pour plus d'informations.
COST
cout_execution
Modifie l'estimation du coût d'exécution de la fonction. Voir CREATE FUNCTION pour plus d'informations.
ROWS
nb_lignes_resultat
Modifie l'estimation du nombre de lignes renvoyées par une fonction SRF. Voir CREATE FUNCTION pour plus d'informations.
SUPPORT
support_function
Fournit une fonction de support de planification utilisable pour cette fonction. Voir Section 38.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
.
paramètre
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 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 20 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.
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.