
# ALTER AGGREGATE
#### 功能描述
修改一个聚合函数的定义。包括名称、所有者和模式。
#### 注意事项
用户要使用ALTER AGGREGATE，必须是该聚合函数的所有者。要改变一个聚合函数的模式，必须在新模式上有CREATE权限。 要改变所有者，必须是新所有角色的一个直接或间接成员，并且该角色必须在聚合函数的所属模式上有CREATE权限。（这些约束限制了所有者通过删除和重建聚合函数执行非法操作。不过，具有SYSADMIN权限的用户可以用任何方法任意更改聚合函数的所属关系）。
#### 语法格式
```
ALTER AGGREGATE name ( argtype [ , ... ] ) RENAME TO new_name;
```
![](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/figure/zh-cn_image_0000002558059399.png "点击放大")
```
ALTER AGGREGATE name ( argtype [ , ... ] ) OWNER TO new_owner;
```
![](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/figure/zh-cn_image_0000002527059514.png "点击放大")
```
ALTER AGGREGATE name ( argtype [ , ... ] ) SET SCHEMA new_schema;
```
![](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/figure/zh-cn_image_0000002526899560.png "点击放大")
#### 参数说明
- **name**
  现有的聚合函数的名称(可以有模式修饰)。
  
- **argtype**
  聚合函数操作的输入数据类型。要引用一个零参数聚合函数，可以写入\*代替输入数据类型列表。
  
- **new_name**
  聚合函数的新名字。
  
- **new_owner**
  聚合函数的新所有者。
  
- **new_schema**
  聚合函数的新模式。
  
 
#### 示例
- 修改聚合函数的名称。
  ```
  --创建自定义函数。
  gaussdb=# CREATE OR REPLACE FUNCTION int_add(int,int)
  RETURNS int AS $BODY$
  DECLARE
  BEGIN
  RETURN $1 + $2;
  END;
  $BODY$ language plpgsql;
  --创建聚合函数。
  gaussdb=# CREATE AGGREGATE myavg (int)
  (
      sfunc = int_add,
      stype = int,
      initcond = '0'
  );
  --把一个接受int类型参数的聚合函数myavg重命名为my_average。
  gaussdb=# ALTER AGGREGATE myavg(int) RENAME TO my_average;
  ```
  
 
- 修改聚合函数的所有者。
  ```
  --创建用户joe。
  gaussdb=# CREATE USER joe PASSWORD '********';
  --把一个接受integer类型参数的聚合函数myavg的所有者改为joe。
  gaussdb=# ALTER AGGREGATE my_average(integer) OWNER TO joe;
  ```
  
- 修改聚合函数的模式。
  ```
  --创建模式myschema。
  gaussdb=# CREATE SCHEMA myschema;
  --把一个接受int类型参数的聚合函数myavg移动到模式myschema中。
  gaussdb=# ALTER AGGREGATE my_average(int) SET SCHEMA myschema;
  --删除SCHEMA,用户及相关函数。
  gaussdb=# DROP SCHEMA myschema CASCADE;
  gaussdb=# DROP USER joe;
  gaussdb=# DROP FUNCTION int_add(int,int);
  ```
  
#### 相关链接
[CREATE AGGREGATE](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-42-0535.html#ZH-CN_TOPIC_0000002527828294)，[DROP AGGREGATE](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-42-0592.html#ZH-CN_TOPIC_0000002527828322)
#### 兼容性
SQL标准里没有ALTER AGGREGATE语句。
