
# ALTER OPERATOR
#### 功能描述
修改一个操作符的定义。
#### 注意事项
要使用ALTER OPERATOR，你必须是该操作符的所有者。要修改所有者，你还必须是新的所有角色的直接或间接成员，并且该成员必须在此操作符的所属模式上有CREATE权限。（这些限制强制了修改该所有者时不会做任何通过删除和重建操作符不能做的事情。不过，具有SYSADMIN权限的用户可以以任何方式修改任意操作符的所有权。）
#### 语法格式
- 更改操作符的所有者。
  ```
  ALTER OPERATOR name ( { left_type | NONE } , { right_type | NONE } ) OWNER TO new_owner;
  ```
  ![](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/figure/zh-cn_image_0000002526900226.png "点击放大")
  
- 更改操作符的模式。
  ```
  ALTER OPERATOR name ( { left_type | NONE } , { right_type | NONE } ) SET SCHEMA new_schema;
  ```
  ![](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/figure/zh-cn_image_0000002558220033.png "点击放大")
  
 
#### 参数说明
- **name**
  一个现有操作符的名字。
  
- **left_type**
  操作符的左操作数的数据类型；如果没有左操作数，那么写NONE。
  
- **right_type**
  操作符的右操作数的数据类型；如果没有右操作数，那么写NONE。
  
- **new_owner**
  操作符的新所有者。
  
- **new_schema**
  操作符的新模式名。
  
 
#### 示例
```
--创建函数。
gaussdb=# CREATE FUNCTION func_add(num1 integer, num2 integer) RETURN INTEGER AS
BEGIN
  RETURN num1+num2;
END;
/
--创建操作符。
gaussdb=# CREATE OPERATOR @@@ (PROCEDURE = func_add,LEFTARG = int,RIGHTARG = int);
--创建用户。
gaussdb=# CREATE USER user1 PASSWORD '********';
--修改操作符。
gaussdb=# ALTER OPERATOR @@@ (int,int) OWNER to user1;
--创建SCHEMA。
gaussdb=# CREATE SCHEMA oper_sch;
--修改操作符。
gaussdb=# ALTER OPERATOR @@@ (int,int) SET SCHEMA oper_sch;
--删除。
gaussdb=# DROP OPERATOR oper_sch.@@@(int,int);
gaussdb=# DROP SCHEMA oper_sch;
gaussdb=# DROP USER user1;
gaussdb=# DROP FUNCTION func_add;
```
#### 相关链接
[CREATE OPERATOR](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-42-0557.html#ZH-CN_TOPIC_0000002527988254)，[CREATE OPERATOR CLASS](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-42-0558.html#ZH-CN_TOPIC_0000002558948123)，[DROP OPERATOR](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-42-0612.html#ZH-CN_TOPIC_0000002527828332)
#### 兼容性
SQL 标准里没有ALTER OPERATOR语句。
