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
参数模式:
IN
或VARIADIC
。如果省略,则默认为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;
将有序集聚合mypercentile
(直接参数类型为float8
,聚合参数类型为integer
)移动到模式myschema
ALTER AGGREGATE mypercentile(float8 ORDER BY integer) SET SCHEMA myschema;
此操作也可以
ALTER AGGREGATE mypercentile(float8, integer) SET SCHEMA myschema;
兼容性
SQL 标准中没有ALTER AGGREGATE
语句。