CREATE FOREIGN TABLE

PostgreSQL 9.4.4 中文手册
上一页 | 上一级 |  | 下一页

# CREATE FOREIGN TABLE

## 名称

CREATE FOREIGN TABLE -- 定义一个新外部表

## 大纲

    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 支持的数据类型的更多信息， 请参考第 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标准的扩展。

## 又见

ALTER FOREIGN TABLE, DROP FOREIGN TABLE, CREATE TABLE, CREATE SERVER

上一页 | 起始页 | 下一页
CREATE FOREIGN DATA WRAPPER | 上一级 | CREATE FUNCTION