VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

ALTER AGGREGATE

功能描述

修改一个聚合函数的定义。

注意事项

  • 要使用 ALTER AGGREGATE ,用户必须是该聚合函数的所有者。
  • 要改变一个聚合函数的模式,用户必须在新模式上有 CREATE 权限。
  • 要改变所有者,用户必须是新所有角色的一个直接或间接成员,并且该角色必须在聚合函数的模式上有 CREATE 权限。

    如上限制保证了修改该所有者时,只能做通过删除和重建聚合函数能做的事情。不过,具有SYSADMIN权限的用户可以用任何方法任意更改聚合函数的所属关系。

语法格式

ALTER AGGREGATE name ( argtype [ , ... ] ) RENAME TO new_name
ALTER AGGREGATE name ( argtype [ , ... ] ) OWNER TO new_owner
ALTER AGGREGATE name ( argtype [ , ... ] ) SET SCHEMA new_schema

参数说明

  • name

    现有的聚合函数的名称(可以有模式修饰)。

  • argtype

    聚合函数操作的输入数据类型。要引用一个零参数聚合函数,可以写入*代替输入数据类型列表。

  • new_name

    聚合函数的新名字。

  • new_owner

    聚合函数的新所有者。

  • new_schema

    聚合函数的新模式。

示例

1、在创建聚集函数之前,创建两个被用作该函数的SFUNC和PREFUNC函数的函数。

CREATE FUNCTION mysfunc_accum(numeric, numeric, numeric) 
  RETURNS numeric
   AS 'select $1 + $2 + $3'
   LANGUAGE SQL
   IMMUTABLE
   RETURNS NULL ON NULL INPUT;

CREATE FUNCTION mypre_accum(numeric, numeric )
  RETURNS numeric
   AS 'select $1 + $2'
   LANGUAGE SQL
   IMMUTABLE
   RETURNS NULL ON NULL INPUT;

2、创建将两列相加的聚集函数。

CREATE AGGREGATE agg_prefunc(numeric, numeric) (
   SFUNC = mysfunc_accum,
   STYPE = numeric,
   PREFUNC = mypre_accum,
   INITCOND = 0 );

3、修改聚合函数agg_prefunc重命名为my_agg_prefunc:

ALTER AGGREGATE agg_prefunc(numeric, numeric) RENAME TO my_agg_prefunc;

4、把聚合函数my_agg_prefunc的所有者,如下命令以joe为例:

CREATE ROLE joe WITH PASSWORD 'Abcd@123';
ALTER AGGREGATE my_agg_prefunc(numeric, numeric) OWNER TO joe;

5、把聚合函数my_agg_prefunc移动到指定模式中,如下命令以myschema为例:

CREATE SCHEMA myschema;
ALTER AGGREGATE my_agg_prefunc(numeric, numeric) SET SCHEMA myschema;

兼容性

SQL标准里没有ALTER AGGREGATE语句。

相关链接

CREATE AGGREGATEDROP AGGREGATE