PostgreSQL 中文参考文档
🌐 英文原版 官方 ↗

68.4. BKI 命令 #

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

创建一个名为 tablename、OID 为 tableoid 的表, 各列由括号中的内容给定。

以下列类型由 bootstrap.c 直接支持:bool、 bytea、char(1 字节)、 name、int2、 int4、regproc、regclass、 regtype、text、 oid、tid、xid、 cid、int2vector、oidvector、 _int4(数组)、_text(数组)、 _oid(数组)、_char(数组)、 _aclitem(数组)。 虽然可以创建包含其他类型列的表,但只有在 pg_type 被创建并填入适当条目之后才能 这样做。 (这实际上意味着只有这些列类型能用于引导目录,但非引导目录可以 包含任何内建类型。)

当指定了 bootstrap 时, 该表只会在磁盘上被创建;不会为它向 pg_class、 pg_attribute 等写入任何条目。 因此,在这些条目以艰难的方式(用 insert 命令)建立之前,该表无法通过普通 SQL 操作访问。 这个选项用于创建 pg_class 等自身。

如果指定了 shared_relation,表会被创建为 共享的。 表的行类型 OID(pg_type OID)可以通过 rowtype_oid 子句可选地指定;如果未指定, 会为它自动生成一个 OID。 (如果指定了 bootstrap, rowtype_oid 子句没有用处,但为了文档目的仍然 可以提供。)

open tablename

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

close tablename

关闭打开的表。必须给出表名作为交叉校验。

insert ( [oid_value] value1 value2 ... )

使用 value1、 value2 等作为列值, 向打开的表中插入一个新行。

空值可以用特殊关键字 _null_ 指定。 看起来不像标识符或数字字符串的值必须用单引号括起来。 (要在值中包含一个单引号,把它写两遍。 字符串中也允许转义字符串风格的反斜杠转义。)

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

在名为 tablename 的表上, 使用 amname 访问 方法,创建一个名为 indexname、OID 为 indexoid 的索引。要建立索引的字段名为 name1、 name2 等,使用的 操作符类则分别为 opclass1、 opclass2 等。 索引文件会被创建,并且会为它建立适当的目录条目,但该命令不会 初始化索引内容。

declare toast toasttableoid toastindexoid on tablename

为名为 tablename 的表创建一个 TOAST 表。 TOAST 表被分配 OID toasttableoid, 其索引被分配 OID toastindexoid。 与 declare index 一样,索引的填充被 推迟。

build indices

填充之前已声明的索引。