ALTER AGGREGATE

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

Synopsis

ALTER AGGREGATE name ( aggregate_signature ) RENAME TO new_name
ALTER AGGREGATE name ( aggregate_signature )
                OWNER TO { new_owner | 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特权。要更改所有者,您还必须是新拥有角色的直接或间接成员,并且该角色必须对聚合函数的架构具有CREATE特权。 (这些限制规定,更改所有者不会通过删除并重新创建聚合函数来做您做不到的任何事情.但是,超级用户仍然可以更改任何聚合函数的所有权.)

Parameters

  • name

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

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

    • 参数的名称。注意ALTER AGGREGATE实际上并没有注意参数名称,因为仅需要参数数据类型来确定聚合函数的身份。
  • argtype

    • 聚合函数所基于的 Importing 数据类型。要引用零参数聚合函数,请写*代替参数规范列表。要引用有序集合的聚合函数,请在直接参数和聚合参数规范之间写入ORDER BY
  • new_name

    • 聚合函数的新名称。
  • new_owner

    • 聚合函数的新所有者。
  • new_schema

    • 聚合函数的新架构。

Notes

推荐的引用有序集合聚合的语法是在直接参数和聚合参数规范之间写入ORDER BY,其样式与CREATE AGGREGATE相同。但是,它也可以省略ORDER BY,而只将直接参数和聚合参数指定运行到单个列表中。在此缩写形式中,如果直接和聚合参数列表中都使用了VARIADIC "any",则只写一次VARIADIC "any"

Examples

要将类型integer的聚合函数myavg重命名为my_average

ALTER AGGREGATE myavg(integer) RENAME TO my_average;

要将类型integer的聚合函数myavg的所有者更改为joe

ALTER AGGREGATE myavg(integer) OWNER TO joe;

要将具有直接float82 类型的直接参数和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语句。

See Also

CREATE AGGREGATE, DROP AGGREGATE