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 new_owner
ALTER FUNCTION nom ( [ [ modearg ] [ nomarg ] typearg [, ...] ] )
SET SCHEMA nouveau_schema
où action peut être :
CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT
IMMUTABLE | STABLE | VOLATILE
[ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER
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 ou INOUT. 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 et INOUT 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 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.
-
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;
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 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™.