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_schemawhereaggregate_signatureis: * | [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;
将直接参数类型为 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 语句。