更新时间:2025-05-29 GMT+08:00
        
          
          
        
      
      
      
      
      
      
      
      
  
      
      
      
        
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
    
聚合函数的新模式。
 
示例
- 修改聚合函数的名称。
    
--创建自定义函数。 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);
 
兼容性
SQL标准里没有ALTER AGGREGATE语句。
   父主题: A