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

填充前面声明的索引。