Postgresql 中文操作指南

ALTER AGGREGATE

ALTER AGGREGATE - 更改聚合函数的定义

Synopsis

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 [ , ... ]

Description

ALTER AGGREGATE 更改聚合函数的定义。

你必须拥有聚合函数才能使用 ALTER AGGREGATE 。要更改聚合函数的模式,你还必须对新模式拥有 CREATE 权限。要更改所有者,你必须能够 SET ROLE 为新的拥有者角色,且该角色必须对聚合函数的模式具有 CREATE 权限。(这些限制强制执行更改所有者不会做出无法通过舍弃和重新创建聚合函数来完成的任何操作。但是,超级用户可以更改任何聚合函数的所有权。)

Parameters

  • name

    • 现有聚合函数的名称(可选模式限定)。

  • argmode

    • 参数的模式: INVARIADIC 。如果省略,则默认为 IN

  • argname

    • 参数的名称。请注意, ALTER AGGREGATE 实际上不会关注参数名称,因为只需要参数数据类型来确定聚合函数的身份。

  • argtype

    • 聚合函数在上面操作的输入数据类型。要引用一个零参数聚合函数,请在参数规格列表中写 * 。要引用一个有序集聚合函数,请在直接和聚合参数规格写 ORDER BY

  • new_name

    • 聚合函数的新名称。

  • new_owner

    • 聚合函数的新所有者。

  • new_schema

    • 聚合函数的新模式。

Notes

引用有序集合聚合的建议语法是在直接参数和聚合参数规范之间编写 ORDER BY ,其样式与 CREATE AGGREGATE 中的相同。然而,它也将省略 ORDER BY 并仅将直接参数和聚合参数规范运行到单个列表中。在此缩写形式中,如果在直接和聚合参数列表中都使用了 VARIADIC "any" ,那么只编写一次 VARIADIC "any"

Examples

要为类型 integer 重命名聚合函数 myavgmy_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;

Compatibility

SQL 标准中没有 ALTER AGGREGATE 语句。