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 | CURRENT_USER | SESSION_USER }
ALTER FUNCTION name ( [ [ argmode ] [ argname ] argtype [, ...] ] )
SET SCHEMA new_schema
其中 action 是以下之一:
CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT
IMMUTABLE | STABLE | VOLATILE | [ NOT ] LEAKPROOF
[ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER
COST execution_cost
ROWS result_rows
SET configuration_parameter { TO | = } { value | DEFAULT }
SET configuration_parameter FROM CURRENT
RESET configuration_parameter
RESET ALL
ALTER FUNCTION更改一个函数的定义。
你必须拥有该函数以使用ALTER FUNCTION。 要更改一个函数的模式,你还必须具有新模式上的CREATE权限。 要更改拥有者,你还必须是新拥有角色的一个直接或者间接成员,并且该角色必须 具有在该函数的模式上的CREATE权限(这些限制强制修改拥有 者不能通过删除和重建函数做任何不能做的事情。不过, 一个超级用户可以更改任何函数的所有权)。
一个现有函数的名称(可以被模式限定)。
一个参数的模式:IN、OUT、 INOUT或者VARIADIC。如果被忽略,默认为 IN。注意ALTER FUNCTION 并不真正关心OUT参数,因为在决定函数的身份时只需要输入参数。 因此列出IN、INOUT以及VARIADIC参数即可。
一个参数的名称。注意ALTER FUNCTION 并不真正关心参数名称,因为在确定函数的身份时只需要参数的数据类型即可。
该函数的参数(如果有)的数据类型(可以被模式限定)。
该函数的新名称。
该函数的新拥有者。注意如果该函数被标记为 SECURITY DEFINER,它的后续执行将会使用新拥有者。
该函数的新模式。
CALLED ON NULL INPUT 将该函数改为在某些或者全部参数为空值时可以被调用。 RETURNS NULL ON NULL INPUT或者STRICT 将该函数改为只要任一参数为空值就不被调用而是自动假定一个空值结果。 详见CREATE FUNCTION。
把该函数的稳定性更改为指定的设置。详见 CREATE FUNCTION。
更改该函数是否为一个安全定义器。关键词EXTERNAL 是为了符合 SQL,它会被忽略。关于这个功能的详情请见 CREATE FUNCTION。
更改该函数是否被认为是防泄漏的。关于这个功能的详情请见 CREATE FUNCTION。
更改该函数的估计执行代价。详见CREATE FUNCTION。
更改一个设置返回函数返回的估计行数。详见 CREATE FUNCTION。
当该函数被调用时,添加或者更改对配置参数值的配置。 如果value是DEFAULT 或者使用等价的RESET,该函数本地的设置将会被移除, 这样该函数会使用其环境中存在的值执行。使用RESET ALL 可以清除所有函数本地的设置。SET FROM CURRENT 把会话中该参数的当前值保存为进入该函数时要应用的值。
为了符合 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;
要调整自动为函数设置的搜索路径:
ALTER FUNCTION check_password(text) SET search_path = admin, pg_temp;
要禁止一个函数的search_path的自动设置:
ALTER FUNCTION check_password(text) RESET search_path;
这个函数将用其调用者使用的搜索路径来执行。