
# ALTER FOREIGN DATA WRAPPER
#### 功能描述
修改外部数据封装的定义。
#### 注意事项
- 只有初始用户和系统管理员用户能够修改外部数据封装。
- 只有在support_extended_features=on时才能够成功执行ALTER语句。
 
#### 语法格式
- 设置外部数据封装属性
  ```
  ALTER FOREIGN DATA WRAPPER name
  [ HANDLER handler_function | NO HANDLER ]
  [ VALIDATOR validator_function | NO VALIDATOR ]
  [ OPTIONS ( [ ADD | SET | DROP ] option ['value'] [, ... ]) ];
  ```
  
 
#### 参数说明
- **name**
  已有外部数据封装的名称。
  

- **HANDLER handler_function**
  为外部数据封装指定一个新的处理函数。
  

- **NO HANDLER**
  这个参数用来指定外部数据封装不再拥有处理函数。
  ![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/public_sys-resources/notice_3.0-zh-cn.png)
  使用外部数据封装但没有handler的外表不能访问。
  

- **VALIDATOR validator_function**
  为外部数据封装指定一个新的验证函数。
  ![](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/public_sys-resources/notice_3.0-zh-cn.png)
  根据新的验证器，外部数据封装器或依赖的服务器、 用户映射或外部表的已经存在的选项是有可能是无效的。用户在使用外部数据封装之前需要保证这些选项是正确的。 不过，ALTER FOREIGN DATA WRAPPER 命令中指定的任何选项都将使用新的验证函数检查。
  

- **NO VALIDATOR**
  这个用来指定外部数据封装不再有验证函数。
  

- **OPTIONS ( \[ ADD \| SET \| DROP \] option \['value'\] \[, ... \] )**
  修改外部数据封装的选项。 ADD, SET, 和 DROP 指定表现的动作。如果没有明确指定操作默认是ADD。选项名必须唯一。 使用外部数据封装验证函数时，名字和取值也会被验证。
  
 
#### 示例
```
--创建一个外部数据封装dbi。
gaussdb=# CREATE FOREIGN DATA WRAPPER dbi OPTIONS (bar 'true');
--修改一个外部数据封装dbi，增加选项foo，删除bar。
gaussdb=# ALTER FOREIGN DATA WRAPPER dbi OPTIONS (ADD foo '1', DROP 'bar');
--修改外部数据封装dbi验证器为file_fdw_validator。
gaussdb=# ALTER FOREIGN DATA WRAPPER dbi VALIDATOR file_fdw_validator;
--修改外部数据封装dbi处理函数为file_fdw_handler。
gaussdb=# ALTER FOREIGN DATA WRAPPER dbi HANDLER file_fdw_handler;
```
#### 相关链接
[CREATE FOREIGN DATA WRAPPER](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-1744.html#ZH-CN_TOPIC_0000002559105901)，[DROP FOREIGN DATA WRAPPER](https://support.huaweicloud.com/distributed-devg-v8-gaussdb/gaussdb-12-1747.html#ZH-CN_TOPIC_0000002527826226)
