2024年9月26日: PostgreSQL 17 发布!
支持的版本:当前 (17) / 16 / 15 / 14 / 13 / 12
开发版本:devel
不支持的版本: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

ALTER AGGREGATE

ALTER AGGREGATE — 更改聚合函数的定义

概要

ALTER AGGREGATE name ( aggregate_signature ) RENAME TO new_name
ALTER AGGREGATE name ( aggregate_signature )
                OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
ALTER AGGREGATE name ( aggregate_signature ) SET SCHEMA new_schema

where aggregate_signature is:

* |
[ argmode ] [ argname ] argtype [ , ... ] |
[ [ argmode ] [ argname ] argtype [ , ... ] ] ORDER BY [ argmode ] [ argname ] argtype [ , ... ]

描述

ALTER AGGREGATE 更改聚合函数的定义。

您必须拥有聚合函数才能使用 ALTER AGGREGATE。要更改聚合函数的模式,您还必须对新模式具有 CREATE 权限。要更改所有者,您必须能够将 SET ROLE 设置为新的拥有角色,并且该角色必须对聚合函数的模式具有 CREATE 权限。(这些限制强制执行更改所有者不会执行您无法通过删除和重新创建聚合函数来执行的操作。但是,超级用户可以随时更改任何聚合函数的所有权。)

参数

name

现有聚合函数的名称(可选地带模式限定)。

argmode

参数的模式:INVARIADIC。如果省略,则默认为 IN

argname

参数的名称。请注意,ALTER AGGREGATE 实际上并不关注参数名称,因为只需要参数数据类型来确定聚合函数的身份。

argtype

聚合函数操作的输入数据类型。要引用零参数聚合函数,请在参数规范列表中写入 *。要引用有序集聚合函数,请在直接和聚合参数规范之间写入 ORDER BY

new_name

聚合函数的新名称。

new_owner

聚合函数的新所有者。

new_schema

聚合函数的新模式。

注释

引用有序集聚合的推荐语法是在直接和聚合参数规范之间写入 ORDER BY,与 CREATE AGGREGATE 中的样式相同。但是,省略 ORDER BY 并将直接和聚合参数规范运行到单个列表中也可以。在此简写形式中,如果在直接和聚合参数列表中都使用了 VARIADIC "any",则仅写入一次 VARIADIC "any"

示例

将类型为 integer 的聚合函数 myavg 重命名为 my_average

ALTER AGGREGATE myavg(integer) RENAME TO my_average;

将类型为 integer 的聚合函数 myavg 的所有者更改为 joe

ALTER AGGREGATE myavg(integer) OWNER TO joe;

将直接参数类型为 float8 且聚合参数类型为 integer 的有序集聚合 mypercentile 移动到模式 myschema

ALTER AGGREGATE mypercentile(float8 ORDER BY integer) SET SCHEMA myschema;

这也可以工作

ALTER AGGREGATE mypercentile(float8, integer) SET SCHEMA myschema;

兼容性

SQL 标准中没有 ALTER AGGREGATE 语句。

提交更正

如果您在文档中看到任何不正确的内容、与您对特定功能的体验不符的内容或需要进一步澄清的内容,请使用 此表单 报告文档问题。