选择 打开 改范围 完整检索页
受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10
当前 PostgreSQL 版本不在支持生命周期内。
您可以参阅当前版本的对应页面,或其他在上面列出的活跃大版本。

68.2. BKI 命令 #

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

创建一个名为 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

填充之前已声明的索引。