2025年9月25日: PostgreSQL 18 发布!
支持的版本: 当前 (18) / 17 / 16 / 15 / 14 / 13
开发版本: devel
不支持的版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4

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,其处理函数为 file_fdw_handler

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 子句是扩展,并且标准子句 LIBRARYLANGUAGEPostgreSQL 中未实现。

但是请注意,整个 SQL/MED 功能尚未完全符合标准。

提交更正

如果您在文档中发现任何不正确、与您对特定功能的体验不符或需要进一步阐明的内容,请使用 此表格 来报告文档问题。