↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4
历史版本PostgreSQL 8.2 已于 2011 年 12 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本。

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

where action is one of:

    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。如果省略, 默认为IN。注意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

更改该函数是否为安全性定义者。关键字EXTERNAL 为了符合 SQL 标准而被忽略。关于这一能力的更多信息,参见 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中是可选的。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。