CREATE FOREIGN DATA WRAPPER name [ HANDLER handler_function | NO HANDLER ] [ VALIDATOR validator_function | NO VALIDATOR ] [ OPTIONS ( option 'value' [, ... ] ) ]
CREATE FOREIGN DATA WRAPPER创建一个新的外部数据封装器。 创建外部数据封装器的用户成为其所有者。
外部数据封装器的名字必需在数据库中唯一。
只有超级用户可以创建外部数据封装器。
要创建的外部数据封装器的名字。
handler_function 是先前已经注册了的函数的名字,用来为外部表检索执行函数。 处理器函数必须没有参数,并且它的返回类型必须为fdw_handler。
不用处理器函数创建外部数据封装器是可能的,但是使用这种封装器的外部表只能被声明,不能被访问。
validator_function
是先前已经注册了的函数的名字,用来检查提供给外部数据封装器的通用选项,
还有使用该外部数据封装器的外部服务器和用户映射的选项。
如果没有验证器函数或声明了NO VALIDATOR,
那么在创建时将不检查选项。(外部数据封装器可能在运行时忽略或拒绝无效的选项说明,
取决于实现。)验证器函数必须接受两个参数:一个类型为text[],
将包含存储在系统目录中的选项的数组,一个类型为oid,
是包含这些选项的系统目录的OID。忽略返回类型;该函数应该使用
ereport(ERROR)
函数报告无效选项。
这个子句为新的外部数据封装器声明选项。允许的选项名和值是特定于每个外部数据封装器的, 并且是经过外部数据封装器的验证器函数验证了的。选项名必须是唯一的。
创建一个无用的外部数据封装器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功能作为一个整体目前是不符合的。