受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发版本: devel

CREATE FOREIGN DATA WRAPPER

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),但HANDLERVALIDATOR子句属于扩展,而标准中的 LIBRARYLANGUAGE子句 在PostgreSQL中尚未实现。

不过需要注意,SQL/MED 功能整体上尚未完全符合该标准。

提交更正

如果您发现文档中有不正确的内容、与您使用特定功能的经验不符或需要进一步说明,请使用此表单来报告文档问题。