CREATE FOREIGN TABLE
Name
CREATE FOREIGN TABLE -- 定义一个新外部表
Synopsis
CREATE FOREIGN TABLE [ IF NOT EXISTS ] _table_name_ ( [
_column_name_ _data_type_ [ OPTIONS ( _option_ '_value_' [, ... ] ) ] [ COLLATE _collation_ ] [ _column_constraint_ [ ... ] ]
[, ... ]
] )
SERVER _server_name_
[ OPTIONS ( _option_ '_value_' [, ... ] ) ]
这里`_column_constraint_` 可以是:
[ CONSTRAINT _constraint_name_ ]
{ NOT NULL |
NULL |
DEFAULT _default_expr_ }
描述
CREATE FOREIGN TABLE
在当前数据库中创建一个外部表,该表将由发出此命令的用户所有。
如果给出了模式名 (for example, CREATE FOREIGN TABLE myschema.mytable ...
) ,那么表是在指定模式中创建的。否则在当前模式中创建外部表。 外部表的名字必须与同一个模式中的其它外部表,表,序列,索引或试图的名字不同
CREATE FOREIGN TABLE
还自动创建一个数据类型,该数据类型代表对应该外部表一行的复合类型。 因此,外部表不能和同模式中的现有数据类型同名。
为了创建一个外部表,除了对外部表所有字段类型有 USAGE
权限外, 还必须有外部表服务器的USAGE
权限。
参数
IF NOT EXISTS
如果已经存在相同名称的对象,在这种情况下,不会抛出错误,只会产生一个通知。 请注意这并不保证将要创建的对象与现有对象是否一致。
_table_name_
要创建的表的名字(可以用模式修饰)。
_column_name_
新表中要创建的字段名。
_data_type_
该字段的数据类型. 它可以包含数组说明符。有关 PostgreSQL 支持的数据类型的更多信息, 请参考Chapter 8。
NOT NULL
该字段不允许包含null值。
NULL
该字段允许包含null值。 这是缺省。
这个子句的存在只是为和那些非标准 SQL 数据库兼容。 我们不建议在新应用中使用它。
DEFAULT
_default_expr_
DEFAULT
子句给它所出现的字段设定一个缺省数值。该数值可以是任何不含变量的表达式(不允许使用子查询和对本表中的其它字段的交叉引用)。缺省表达式的数据类型必须和字段类型匹配。
缺省表达式将被用于任何未指定该字段数值的插入操作。 如果字段上没有缺省值,那么缺省是 NULL。
_server_name_
外部表使用的已存在的外部服务器名称。更多细节,参考CREATE SERVER。
OPTIONS (
_option_
'_value_
' [, ...] )
选项与新外部表或外部表中的字段有关。允许的选项名称和值,是由每一个外部数据封装器中来说是特别指定的。 也是通过外部数据封装器的验证函数来验证。重复的选项名称是不被允许的(尽管表选项和表字段选项可以有相同的名字)。
例子
创建外部表 films
, 该表通过服务器 film_server
访问:
CREATE FOREIGN TABLE films (
code char(5) NOT NULL,
title varchar(40) NOT NULL,
did integer NOT NULL,
date_prod date,
kind varchar(10),
len interval hour to minute
)
SERVER film_server;
兼容性
CREATE FOREIGN TABLE
命令最大程度上符合了SQL标准; 然而,就像使用CREATE TABLE
,NULL
约束和 零字段外部表以及设定默认值的功能是PostgreSQL对SQL标准的扩展。
See Also
ALTER FOREIGN TABLE, DROP FOREIGN TABLE, CREATE TABLE, CREATE SERVER