🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# CREATE FOREIGN DATA WRAPPER ## Name CREATE FOREIGN DATA WRAPPER -- 定义一个外部数据封装器 ## Synopsis ``` CREATE FOREIGN DATA WRAPPER _name_ [ HANDLER _handler_function_ | NO HANDLER ] [ VALIDATOR _validator_function_ | NO VALIDATOR ] [ OPTIONS ( _option_ '_value_' [, ... ] ) ] ``` ## 描述 `CREATE FOREIGN DATA WRAPPER`创建一个新的外部数据封装器。 创建外部数据封装器的用户成为其所有者。 外部数据封装器的名字必需在数据库中唯一。 只有超级用户可以创建外部数据封装器。 ## 参数 `_name_` 要创建的外部数据封装器的名字。 `HANDLER` `_handler_function_` `_handler_function_` 是先前已经注册了的函数的名字,用来为外部表检索执行函数。 处理器函数必须没有参数,并且它的返回类型必须为`fdw_handler`。 不用处理器函数创建外部数据封装器是可能的,但是使用这种封装器的外部表只能被声明,不能被访问。 `VALIDATOR` `_validator_function_` `_validator_function_` 是先前已经注册了的函数的名字,用来检查提供给外部数据封装器的通用选项, 还有使用该外部数据封装器的外部服务器和用户映射的选项。 如果没有验证器函数或声明了`NO VALIDATOR`, 那么在创建时将不检查选项。(外部数据封装器可能在运行时忽略或拒绝无效的选项说明, 取决于实现。)验证器函数必须接受两个参数:一个类型为`text[]`, 将包含存储在系统目录中的选项的数组,一个类型为`oid`, 是包含这些选项的系统目录的OID。忽略返回类型;该函数应该使用 `ereport(ERROR)`函数报告无效选项。 `OPTIONS (` `_option_` '`_value_`' [, ... ] ) 这个子句为新的外部数据封装器声明选项。允许的选项名和值是特定于每个外部数据封装器的, 并且是经过外部数据封装器的验证器函数验证了的。选项名必须是唯一的。 ## 注意 PostgreSQL的外部数据功能一直在积极开发。 查询的优化是原始的(并且主要是封装器)。因此,未来的性能提升有很大的空间。 ## 例子 创建一个无用的外部数据封装器`dummy`: ``` CREATE FOREIGN DATA WRAPPER dummy; ``` 创建一个带有处理器函数`file_fdw_handler` 的外部数据封装器`file`: ``` CREATE FOREIGN DATA WRAPPER file HANDLER file_fdw_handler; ``` 创建一个带有一些选项的外部数据封装器`mywrapper`: ``` CREATE FOREIGN DATA WRAPPER mywrapper OPTIONS (debug 'true'); ``` ## 兼容性 `CREATE FOREIGN DATA WRAPPER`遵从ISO/IEC 9075-9 (SQL/MED), 除了`HANDLER`和`VALIDATOR`子句是扩展, 并且标准的子句`LIBRARY`和`LANGUAGE` 没有在PostgreSQL中实现。 请注意,然而,SQL/MED功能作为一个整体目前是不符合的。 ## 又见 [ALTER FOREIGN DATA WRAPPER](#calibre_link-59), [DROP FOREIGN DATA WRAPPER](#calibre_link-61), [CREATE SERVER](#calibre_link-6), [CREATE USER MAPPING](#calibre_link-68), [CREATE FOREIGN TABLE](#calibre_link-0)