9.3 9.4 9.5 9.6 10 11 12 13 14 Current(15)
阿里云PostgreSQL 问题报告 纠错本页面

ALTER AGGREGATE

名称

ALTER AGGREGATE -- 更改一个聚集函数的定义

大纲

ALTER AGGREGATE name ( aggregate_signature ) RENAME TO new_name
ALTER AGGREGATE name ( aggregate_signature )
                OWNER TO { new_owner | 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特权。要修改所有者,你还必须是新所有角色 的一个直接或者间接成员,并且那个角色必须在聚集函数的模式上拥有 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语句。

另见

CREATE AGGREGATE, DROP AGGREGATE
<
/BODY >