
# ALTER EXTENSION
![](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/public_sys-resources/notice_3.0-zh-cn.png)
扩展功能为内部使用功能，不建议用户使用。
#### 功能描述
修改已安装扩展的定义。
#### 注意事项
- UPDATE 更新这个扩展到一个新的版本。这个扩展必须满足一个适用的更新脚本(或者一系列脚本)， 才能修改当前安装版本到一个要求的版本。
  
- SET SCHEMA 移动扩展对象到另一个模式。这个扩展必须relocatable才能使命令成功。
  
- ADD member_object 添加一个已存在对象到扩展主要适用于扩展更新脚本上。这个对象接着会被视为扩展的成员， 该对象只能通过取消扩展来取消 。
  
- DROP member_object 从扩展上移除一个成员对象。主要适用于扩展更新脚本上，这个对象没有被取消，只是从扩展里被移除。
  您必须拥有扩展来使用 ALTER EXTENSION。这个 ADD/DROP 方式要求 添加/删除对象的所有权。
  
![](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/public_sys-resources/notice_3.0-zh-cn.png)
要使用该功能，需要设置support_extended_features为true。
#### 语法格式
- 修改扩展的版本。
```
ALTER EXTENSION name UPDATE [ TO new_version ];
```
- 修改扩展的模式。
```
ALTER EXTENSION name SET SCHEMA new_schema;
```
- 添加或删除扩展的成员对象。
```
ALTER EXTENSION name { ADD | DROP } member_object;
```
其中成员对象member_object写法为：
```
{AGGREGATE agg_name (agg_type [, ...] ) |
  CAST (source_type AS target_type) |
  COLLATION object_name |
  CONVERSION object_name |
  DOMAIN object_name |
  EVENT TRIGGER object_name |
  FOREIGN DATA WRAPPER object_name |
  FOREIGN TABLE object_name |
  FUNCTION function_name ( [ [ argname ] [ argmode ] argtype [, ...] ] ) |
  MATERIALIZED VIEW object_name |
  OPERATOR operator_name (left_type, right_type) |
  OPERATOR CLASS object_name USING index_method |
  OPERATOR FAMILY object_name USING index_method |
  [ PROCEDURAL ] LANGUAGE object_name |
  SCHEMA object_name |
  SEQUENCE object_name |
  SERVER object_name |
  TABLE object_name |
  TEXT SEARCH CONFIGURATION object_name |
  TEXT SEARCH DICTIONARY object_name |
  TEXT SEARCH PARSER object_name |
  TEXT SEARCH TEMPLATE object_name |
  TYPE object_name |
  VIEW object_name}
```
#### 参数说明
- **name**
  已安装扩展的名称。
  
- **new_version**
  扩展的新版本。可以通过被标识符和字面字符重写。如果不指定的扩展的新版本，ALTER EXTENSION UPDATE会更新到扩展的控制文件中显示的默认版本。
  
- **new_schema**
  扩展的新模式。
  
- **object_name**
  **agg_name**
  **function_name**
  **operator_name**
  从扩展里被添加或移除的对象的名称。包含表、聚合 、域、外链表、函数、操作符、操作符类、操作符族、序列、文本搜索对象、类型和能被模式合格的视图的名称。
  
- **agg_type**
  在聚合函数操作上的一个输入数据类型，去引用一个零参数聚合函数，写 \* 代替这些输入数据类型列表。
  
- **source_type**
  强制转换的源数据类型的名称。
  
- **target_type**
  强制转换的目标数据类型的名称。
  
- **argmode**
  这个函数参数的模型：IN、OUT、INOUT或者 VARIADIC。如果省略的话，默认值为IN。ALTER EXTENSION 不关心OUT参数，因为确认函数的一致性只需要输入参数，因此列出 IN、INOUT和 VARIADIC参数就足够了。
  
- **argname**
  函数参数的名称。ALTER EXTENSION不关心参数名称，确认函数的一致性只需要参数数据类型。
  
- **argtype**
  函数参数的数据类型（可以有模式修饰）。
  
- **left_type**
  **right_type**
  操作符参数的数据类型（可以有模式修饰），为前缀或后缀运算符的丢失参数写NONE。
  
 
#### 相关链接
[CREATE EXTENSION](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-42-0545.html#ZH-CN_TOPIC_0000002527988248)，[DROP EXTENSION](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-42-0601.html#ZH-CN_TOPIC_0000002559108045)
