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 | CURRENT_USER | SESSION_USER }
ALTER FUNCTION name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] SET SCHEMA new_schema ALTER FUNCTION name [ ( [ [ argmode ] [ argname ] argtype [, ...] ] ) ] [ NO ] DEPENDS ON EXTENSION extension_name其中 action 是以下之一:
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 }
COST execution_cost ROWS result_rows SUPPORT support_function SET configuration_parameter { TO | = } { value | DEFAULT } SET configuration_parameter FROM CURRENT RESET configuration_parameter RESET ALL
ALTER FUNCTION
更改一个函数的定义。
你必须拥有该函数以使用ALTER FUNCTION
。要更改一个函数 的模式,你还必须具有新模式上的CREATE
特权。要 更改拥有者,你还必须是新拥有角色的一个直接或者间接成员,并且该角色必须 具有在该函数的模式上的CREATE
特权(这些限制强制修改拥有 者不能做一些通过删除和重建该函数做不到的事情。不过,一个超级用户怎么都能 更改任何函数的所有权)。
name
一个现有函数的名称(可以被模式限定)。如果没有指定参数列表, 则该名称必须在它的模式中唯一。
argmode
一个参数的模式:IN
、OUT
、 INOUT
或者VARIADIC
。如果被忽略,默认为 IN
。注意ALTER FUNCTION
并不真正关心OUT
参数,因为在决定函数的身份时只需要输 入参数。因此列出IN
、INOUT
以及 VARIADIC
参数即可。
argname
一个参数的名称。注意ALTER FUNCTION
并不真正参数名称,因为在确定函数的身份时只需要参数的数据类型即可。
argtype
该函数的参数(如果有)的数据类型(可以被模式限定)。
new_name
该函数的新名称。
new_owner
该函数的新拥有者。注意如果该函数被标记为 SECURITY DEFINER
,它的后续执行将会使用新拥有者。
new_schema
该函数的新模式。
DEPENDS ON EXTENSION extension_name
NO DEPENDS ON EXTENSION extension_name
此格式将功能标记为依赖于扩展名,或者如果指定了NO
,则不再依赖于该扩展名。 删除扩展名后,会自动删除标记为依赖于扩展名的功能。
CALLED ON NULL INPUT
RETURNS NULL ON NULL INPUT
STRICT
CALLED ON NULL INPUT
将该函数改为在某些 或者全部参数为空值时可以被调用。 RETURNS NULL ON NULL INPUT
或者 STRICT
将该函数改为只要任一参数为空值就不被调用而 是自动假定一个空值结果。详见CREATE FUNCTION。
IMMUTABLE
STABLE
VOLATILE
把该函数的稳定性更改为指定的设置。详见 CREATE FUNCTION。
[ EXTERNAL ] SECURITY INVOKER
[ EXTERNAL ] SECURITY DEFINER
更改该函数是否为一个安全性定义者。关键词EXTERNAL
是为了符合 SQL,它会被忽略。关于这项能力的详情请见 CREATE FUNCTION。
PARALLEL
决定该函数对于并行是否安全。详见 CREATE FUNCTION。
LEAKPROOF
更改该函数是否被认为是防泄漏的。关于这项能力的详情请见 CREATE FUNCTION。
COST
execution_cost
更改该函数的估计执行代价。详见CREATE FUNCTION。
ROWS
result_rows
更改一个集合返回函数的估计行数。详见 CREATE FUNCTION。
SUPPORT
support_function
设置或更改计划器支持函数以使用这个函数。详请参见第 37.11 节,你必须是超级用户才可以使用此选项。
此选项不能用于完全删除支持功能,因为它必须命名新的支持函数。 如果需要这样做,可以使用CREATE OR REPLACE FUNCTION
。
configuration_parameter
value
当该函数被调用时,要对一个配置参数做出增加或者更改的赋值。如果 value
是DEFAULT
或者使用等价的RESET
,该函数本地的设置将会被 移除,这样该函数会使用其环境中存在的值执行。使用RESET ALL
可以清除所有函数本地的设置。 SET FROM CURRENT
把ALTER FUNCTION
执行时该参数的当前值保存为进入 该函数时要应用的值。
有关允许的参数名称和值可详见SET以及 第 19 章。
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;
要把类型integer
的函数sqrt
标记为依赖于扩展mathlib
:
ALTER FUNCTION sqrt(integer) DEPENDS ON EXTENSION mathlib;
要调整一个函数的自动搜索路径:
ALTER FUNCTION check_password(text) SET search_path = admin, pg_temp;
要禁止一个函数的search_path
的自动设置:
ALTER FUNCTION check_password(text) RESET search_path;
这个函数将用其调用者使用的搜索路径来执行。
这个语句部分兼容 SQL 标准中的ALTER FUNCTION
语句。该标准允许修改一个函数的更多属性,但是不提供 重命名一个函数、标记一个函数为安全性定义者、为一个函数附加配置参 数值或者更改一个函数的拥有者、模式或者稳定性等功能。该标准还要求 RESTRICT
关键字,它在PostgreSQL 中是可选的。
CREATE FUNCTION
, DROP FUNCTION, ALTER PROCEDURE, ALTER ROUTINE
备案信息: 粤ICP备15087711号-2
Copyright © 2008-2024 啊嘎哇在线工具箱 All Rights.
本站所有资料来源于网络,版权归原作者所有,仅作学习交流使用,如不慎侵犯了您的权利,请联系我们。