PostgreSQL 中文参考文档
🌐 英文原版 官方 ↗

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),但其中 HANDLER 和 VALIDATOR 子句是扩展,而标准子句 LIBRARY 和 LANGUAGE 未在 PostgreSQL 中实现。

但请注意,SQL/MED 功能作为一个整体尚未达到符合标准的程度。

另请参阅

ALTER FOREIGN DATA WRAPPER, DROP FOREIGN DATA WRAPPER, CREATE SERVER, CREATE USER MAPPING, CREATE FOREIGN TABLE