9.3 9.4 9.5 9.6 10 11 12
阿里云PostgreSQL 问题报告 纠错本页面

ALTER AGGREGATE

名称

ALTER AGGREGATE -- 修改一个聚合函数的定义

大纲

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