选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0
历史版本PostgreSQL 9.3 已于 2018 年 11 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本

59.2. BKI 命令 #

create tablename tableoid [bootstrap] [shared_relation] [without_oids] [rowtype_oid oid] (name1 = type1 [, name2 = type2, ...])

创建一个名为 tablename、OID 为 tableoid 的表,其列定义在括号中给出。

bootstrap.c 直接支持以下列类型:boolbyteachar(1 字节)、nameint2int4regprocregclassregtypetextoidtidxidcidint2vectoroidvector_int4(数组)、_text(数组)、_oid(数组)、_char(数组)以及 _aclitem(数组)。虽然也可以创建包含其他类型列的表,但这必须等到 pg_type 创建完成并填入合适条目之后才能做到。(实际上,这意味着引导目录中只能使用这些列类型,而非引导目录则可以包含任何内置类型。)

指定 bootstrap 时,表只会在磁盘上创建;不会在 pg_classpg_attribute 等目录中为它写入任何信息。因此,在通过 insert 命令以较为原始的方式补入这些条目之前,普通 SQL 操作无法访问该表。这个选项用于创建 pg_class 等目录自身。

如果指定了 shared_relation,该表就会作为共享表创建。除非指定 without_oids,否则该表将具有 OID。该表的行类型 OID(即 pg_type 中对应的 OID)还可以通过 rowtype_oid 子句显式指定;如果不指定,就会自动为其生成一个 OID。(如果指定了 bootstrap,那么 rowtype_oid 子句其实没有用,但仍然可以写上,作为文档说明。)

open tablename

打开名为 tablename 的表,以便插入数据。当前任何已打开的表都会被关闭。

close [tablename]

关闭当前打开的表。可以给出表名进行交叉校验,但并非必须。

insert [OID = oid_value] ( value1 value2 ... )

向当前打开的表插入一行新数据,使用 value1value2 等作为各列的值,使用 oid_value 作为其 OID。如果 oid_value 为零(0)或省略该子句,并且该表具有 OID,则分配下一个可用 OID。

NULL 值可以用特殊关键字 _null_ 表示。包含空格的值必须用双引号括起来。

declare [unique] index indexname indexoid on tablename using amname ( opclass1 name1 [, ...] )

在名为 tablename 的表上,使用 amname 访问方法,创建一个名为 indexname、OID 为 indexoid 的索引。要建立索引的字段分别称为 name1name2 等;使用的操作符类分别为 opclass1opclass2 等。该命令会创建索引文件并写入相应的目录条目,但不会初始化索引内容。

declare toast toasttableoid toastindexoid on tablename

为名为 tablename 的表创建一个 TOAST 表。该 TOAST 表的 OID 设为 toasttableoid,其索引的 OID 设为 toastindexoid。与 declare index 一样,索引填充会被延后。

build indices

填充之前已声明的索引。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。