问题报告 纠错本页面

CREATE FOREIGN DATA WRAPPER

Name

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功能作为一个整体目前是不符合的。

又见

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