↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

Wiki / SQL 命令

ALTER AGGREGATE

更改一个聚合函数的定义

英文手册覆盖始于 PostgreSQL 6.4. 来源历史与运行验证各自保留独立版本边界。

当前阅读 PG 18·选择有来源记录的版本

anchor
SQL-ALTERAGGREGATE
file
sql-alteraggregate.html
lang
en
name
ALTER AGGREGATE
purpose
change the definition of an aggregate function
purpose zh
未知
sections same as
未知
slug
18

语法

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 name ( aggregate_signature ) RENAME TO new_name
ALTER AGGREGATE · 语法 2
ALTER AGGREGATE name ( aggregate_signature ) OWNER TO new_owner CURRENT_ROLE CURRENT_USER SESSION_USER
ALTER AGGREGATE · 语法 3
ALTER AGGREGATE name ( aggregate_signature ) SET SCHEMA new_schema
aggregate_signature
* argmode argname argtype , argmode argname argtype , ORDER BY argmode argname argtype ,

版本定义 PG 18

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
其中 aggregate_signature 是:

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

描述

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

要使用ALTER AGGREGATE,你必须拥有该聚合函数。要更改聚合函数的模式,你还必须在新模式上具有 CREATE权限。要更改拥有者,你必须能够对新的拥有角色执行 SET ROLE,并且该角色必须在该聚合函数所在模式上具有 CREATE权限。(这些限制确保更改拥有者不会做出任何你无法通过删除并重新创建该聚合函数来完成的事情。不过,超级用户无论如何都可以更改任何聚合函数的所有权。)

参数

name

现有聚合函数的名称(可以用模式限定)。

argmode

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

argname

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

argtype

聚合函数作用于其上的输入数据类型。要引用零参数聚合函数,请在参数说明列表的位置写上*。要引用有序集聚合函数,请在直接参数说明和聚合参数说明之间写上ORDER BY。

new_name

聚合函数的新名称。

new_owner

聚合函数的新拥有者。

new_schema

聚合函数的新模式。

注解

引用有序集聚合的推荐语法,是像CREATE AGGREGATE 中那样,在直接参数说明和聚合参数说明之间写上ORDER BY。不过,省略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语句。

另见

CREATE AGGREGATE, DROP AGGREGATE

比较版本

完整来源事实

synopsis html

ALTER AGGREGATE <em class="replaceable"><code>name</code></em> ( <em class="replaceable"><code>aggregate_signature</code></em> ) RENAME TO <em class="replaceable"><code>new_name</code></em>
ALTER AGGREGATE <em class="replaceable"><code>name</code></em> ( <em class="replaceable"><code>aggregate_signature</code></em> )
                OWNER TO { <em class="replaceable"><code>new_owner</code></em> | CURRENT_ROLE | CURRENT_USER | SESSION_USER }
ALTER AGGREGATE <em class="replaceable"><code>name</code></em> ( <em class="replaceable"><code>aggregate_signature</code></em> ) SET SCHEMA <em class="replaceable"><code>new_schema</code></em>

<span class="phrase">where <em class="replaceable"><code>aggregate_signature</code></em> is:</span>

* |
[ <em class="replaceable"><code>argmode</code></em> ] [ <em class="replaceable"><code>argname</code></em> ] <em class="replaceable"><code>argtype</code></em> [ , ... ] |
[ [ <em class="replaceable"><code>argmode</code></em> ] [ <em class="replaceable"><code>argname</code></em> ] <em class="replaceable"><code>argtype</code></em> [ , ... ] ] ORDER BY [ <em class="replaceable"><code>argmode</code></em> ] [ <em class="replaceable"><code>argname</code></em> ] <em class="replaceable"><code>argtype</code></em> [ , ... ]

synopsis text

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 [ , ... ]

来源引用

完整定义与证据 JSON

定义来源

center · PostgreSQL 18 · a709ab85

正文语言: zh-Hans · 1b5ca64c