ALTER AGGREGATE
ALTER AGGREGATE — 更改一个聚合函数的定义
大纲
ALTER AGGREGATEname(aggregate_signature) RENAME TOnew_nameALTER AGGREGATEname(aggregate_signature) OWNER TO {new_owner| CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER AGGREGATEname(aggregate_signature) SET SCHEMAnew_schema其中aggregate_signature是: * | [argmode] [argname]argtype[ , ... ] | [ [argmode] [argname]argtype[ , ... ] ] ORDER BY [argmode] [argname]argtype[ , ... ]
描述
ALTER AGGREGATE 更改聚合函数的定义。
要使用 ALTER AGGREGATE,你必须拥有该聚合函数。要更改聚合函数的模式,你还必须在新模式上具有
CREATE 权限。要更改拥有者,你必须能够对新的拥有角色执行
SET ROLE,并且该角色必须在该聚合函数所在模式上具有
CREATE 权限。(这些限制确保更改拥有者不会做出任何你无法通过删除并重新创建该聚合函数来完成的事情。不过,超级用户无论如何都可以更改任何聚合函数的所有权。)
参数
注解
引用有序集聚合的推荐语法,是像 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 语句。
报告文档问题
阅读 上游文档. 通过 PostgreSQL 文档反馈表单.