codecamp

PostgreSQL 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 功能还没有符合。


PostgreSQL CREATE EXTENSION
PostgreSQL CREATE FOREIGN TABLE
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

PostgreSQL SQL语言

PostgreSQL 服务器管理

PostgreSQL 客户端接口

PostgreSQL 服务器编程

PostgreSQL 参考

PostgreSQL 内部

PostgreSQL 附录

PostgreSQL 参考书目

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }