# 创建外部数据包装器

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

# 概要

CREATE FOREIGN DATA WRAPPER name
    [ HANDLER handler_function | NO HANDLER ]
    [ VALIDATOR validator_function | NO VALIDATOR ]
    [ OPTIONS ( option 'value' [, ... ] ) ]

# 描述

创建外部数据包装器创建一个新的外部数据包装器。定义外部数据包装器的用户成为其所有者。

外部数据包装名称在数据库中必须是唯一的。

只有超级用户可以创建外部数据包装器。

# 参数

姓名

要创建的外部数据包装器的名称。

处理程序 *handler_function*

*handler_function*是先前注册的函数的名称,该函数将被调用以检索外部表的执行函数。处理函数必须不带参数,并且它的返回类型必须是fdw_handler.

可以创建一个没有处理函数的外部数据包装器,但是使用这种包装器的外部表只能声明,不能访问。

验证器 *验证器函数*

*验证器函数*是先前注册的函数的名称,将调用该函数来检查给予外部数据包装器的通用选项,以及使用外部数据包装器的外部服务器、用户映射和外部表的选项。如果没有验证器功能或没有验证者指定,则在创建时不会检查选项。(外部数据包装器可能会在运行时忽略或拒绝无效的选项规范,具体取决于实现。)验证器函数必须采用两个参数:一个类型文本[],它将包含存储在系统目录中的选项数组,以及类型之一样的,它将是包含选项的系统目录的 OID。返回类型被忽略;该函数应使用报告(错误)功能。

选项 ( *选项*'*价值*' [, ... ] )

此子句为新的外部数据包装器指定选项。允许的选项名称和值特定于每个外部数据包装器,并使用外部数据包装器的验证器函数进行验证。选项名称必须是唯一的。

# 笔记

PostgreSQL 的外部数据功能仍在积极开发中。查询的优化是原始的(也主要留给包装器)。因此,未来的性能改进还有相当大的空间。

# 例子

创建一个无用的外部数据包装器假的

CREATE FOREIGN DATA WRAPPER dummy;

创建外部数据包装器文件带处理函数file_fdw_handler

CREATE FOREIGN DATA WRAPPER file HANDLER file_fdw_handler;

创建外部数据包装器我的包装器有一些选择:

CREATE FOREIGN DATA WRAPPER mywrapper
    OPTIONS (debug 'true');

# 兼容性

创建外部数据包装器符合 ISO/IEC 9075-9 (SQL/MED),除了处理程序验证器条款是扩展和标准条款图书馆语言没有在 PostgreSQL 中实现。

但是请注意,SQL/MED 功能作为一个整体尚不符合要求。

# 也可以看看

更改外部数据包装器, 丢弃外国数据包装器, 创建服务器, 创建用户映射, 创建外表