PostgreSQL 8.2.3 中文文档
后退快退快进前进

ALTER FUNCTION

名称

ALTER FUNCTION -- 修改一个函数的定义

语法

ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )
    action [, ... ] [ RESTRICT ]
ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )
    RENAME TO new_name
ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )
    OWNER TO new_owner
ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )
    SET SCHEMA new_schema

这里的 action 是如下之一:

    CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT
    IMMUTABLE | STABLE | VOLATILE
    [ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER

描述

ALTER FUNCTION 修改一个函数的定义。

要使用 ALTER FUNCTION ,你必须拥有该函数。要修改一个函数的模式,你还必须在新模式上拥有 CREATE 权限。要修改所有者,你还必须是新的所有角色的直接或间接成员,并且该成员必须在此函数的模式上有 CREATE 权限。这些限制强制了修改该所有者不会做任何通过删除和重建函数不能做的事情。不过,超级用户可以以任何方式修改任意函数的所有权。

参数

name

一个现有的函数名字(可以有模式修饰)

argmode

参数的模式:可以是 IN(缺省), OUT, INOUT 之一。请主意 ALTER FUNCTION 实际不会注意任何 OUT 参数,因为判断函数的身份只需要输入参数。因此列出 IN 和 INOUT 参数就足够了。

argname

参数的名字。请注意 ALTER FUNCTION 实际上不会注意参数的名字,因为只有参数的数据类型用于判断函数的身份。

argtype

如果有的话,是该函数参数的数据类型(可以用模式修饰)。

new_name

函数的新名字

new_owner

函数的新所有者。请注意如果函数标记为 SECURITY DEFINER ,那么它随后将以新的所有者执行。

new_schema

函数的新模式

CALLED ON NULL INPUT
RETURNS NULL ON NULL INPUT
STRICT

CALLED ON NULL INPUT 把函数改成在所有参数都是 NULL 的时候也会调用它。RETURNS NULL ON NULL INPUT 或 STRICT 把函数改成如果任何一个参数是 NULL 就根本不执行并且自动返回 NULL 。参阅 CREATE FUNCTION 获取更多信息。

IMMUTABLE
STABLE
VOLATILE

把函数的易失属性修改为指定类型。参阅 CREATE FUNCTION 获取细节。

[EXTERNAL] SECURITY INVOKER
[EXTERNAL] SECURITY DEFINER

修改函数的安全性定义,标识它是否是安全定义器。出于兼容 SQL 标准,关键字 EXTERNAL 将被忽略。参阅 CREATE FUNCTION 获取更多有关这个功能的信息。

RESTRICT

因兼容 SQL 标准而忽略

例子

把参数类型为 integer 的函数 sqrt 重命名为 square_root :

ALTER FUNCTION sqrt(integer) RENAME TO square_root;

把参数类型为 integer 的函数 sqrt 的所有者修改为 joe :

ALTER FUNCTION sqrt(integer) OWNER TO joe;

把参数类型为 integer 的函数 sqrt 的模式修改为 maths :

ALTER FUNCTION sqrt(integer) SET SCHEMA maths;

兼容性

这个语句部分兼容 SQL 标准里面的 ALTER FUNCTION 语句。标准允许修改函数的更多属性,但是没有提供修改函数名字的功能,也没有提供把一个函数定义为安全定义器的功能,更没有修改函数所有者、模式、易失性的功能。标准还要求 RESTRICT 关键字;这在 PostgreSQL 里是可选的。

又见

CREATE FUNCTION, DROP FUNCTION

后退首页前进
ALTER DOMAIN上一级ALTER GROUP