Redrock Postgres 搜索 英文
版本: 9.3 / 9.4 / 9.5 / 9.6 / 10 / 11 / 12 / 13 / 14 / 15 / 16 / 17

CREATE FOREIGN DATA WRAPPER

CREATE FOREIGN DATA WRAPPER — 定义一个新的外来数据包装器

语法

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 功能作为一个整体尚未符合要求。

另请参见

ALTER FOREIGN DATA WRAPPERDROP FOREIGN DATA WRAPPERCREATE SERVERCREATE USER MAPPINGCREATE FOREIGN TABLE