59.2. BKI 命令

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

创建一个名为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等系统表里输入任何东西。因此这样的表将无法被普通的 SQL 操作访问, 直到那些记录用硬办法(用insert命令)填入。这个选项用于创建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 ... )

如果oid_value为零,那么用 value1, value2等作为字段值以及 oid_value作为其 OID(对象标识)向打开的表插入一条新记录, 否则省略子句,而表则拥有 OID ,并赋予下一个可用的 OID 数值。

NULL 可以用特殊的关键字_null_声明。包含空白的值必须用双引号栝起。

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

在一个叫tablename的表上用 amname访问方法创建一个 OID 是 indexoid的叫做 indexname的索引。索引的字段为 name1, name2 等,而使用的操作符类分别是opclass1, opclass2等。将会创建索引文件和恰当的系统表记录, 但是索引内容不会由此命令初始化。

declare toast toasttableoid toastindexoid on tablename

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

build indices

填充前面声明的索引。