CREATE FOREIGN TABLE
功能描述
创建外表。
注意事项
- 外表中暂不支持使用系统列(如tableoid,ctid等),其中Private和Shared模式的外表,需要初始用户或者运维模式下(operation_mode)的运维管理员权限。
- OPTIONS中的敏感字段(如password, secret_access_key)在使用多层引号时,语义和不带引号的场景是不同的,因此不会被识别为敏感字段进行脱敏。
- 多租场景下,只有初始用户可在PDB内部执行CREATE FOREIGN TABLE命令。
语法格式
CREATE FOREIGN TABLE [ IF NOT EXISTS ] table_name ( [ column_name type_name [ OPTIONS ( { option 'value' } [, ... ] ) ] [ COLLATE collation ] [ column_constraint [ ... ] ] [, ... ] ] ) SERVER server_name [ OPTIONS ( { option 'value' } [, ... ] ) ];
[ CONSTRAINT constraint_name ] { NOT NULL | NULL | DEFAULT default_expr }
参数说明
-
如果已经存在相同名称的表,不会抛出一个错误,而会发出一个通知,告知表关系已存在。
-
外表的表名。
取值范围:字符串,要符合标识符命名规范。
-
外表中的字段名。
取值范围:字符串,要符合标识符命名规范。
-
字段的数据类型。
- COLLATE collation
COLLATE子句指定列的排序规则(该列必须是可排列的数据类型)。如果没有指定,则使用默认的排序规则。排序规则可以使用“select * from pg_collation;”命令从pg_collation系统表中查询。
-
外表的server名称。
-
OPTIONS ( option 'value' [, ... ] )
选项与新外部表或外部表中的字段有关。允许的选项名称和值,是由每一个外部数据封装器指定的。 也是通过外部数据封装器的验证函数来验证。重复的选项名称是不被允许的(尽管表选项和表字段选项可以有相同的名字)。
-
字段值不允许为NULL。
-
字段值允许为NULL。
-
DEFAULT子句给字段指定缺省值。该数值可以是任何不含变量的表达式(不允许使用子查询和对本表中的其他字段的交叉引用)。缺省表达式的数据类型必须和字段类型匹配。
缺省表达式将被用于任何未声明该字段数值的插入操作。如果没有指定缺省值则缺省值为NULL 。
示例
--创建server。 gaussdb=# CREATE SERVER my_server FOREIGN DATA WRAPPER log_fdw; --创建外表。 gaussdb=# CREATE FOREIGN TABLE foreign_tbl (col1 text) SERVER my_server OPTIONS (logtype 'gs_log'); --删除外表。 gaussdb=# DROP FOREIGN TABLE foreign_tbl; --删除server。 gaussdb=# DROP SERVER my_server;