55.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被指定,那么The rowtype_oid将会是无效的, 但是它仍可以被提供给文档。)

open tablename

打开一个名为tablename 的表,准备插入数据。任何当前被打开的表都会被关闭。

close [tablename]

关闭已经被打开的表。给出的表名是用于交叉检验,但并不是必须的。

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

打开一个表,向其中插入一行数据, value1, value2作为字段,oid_value作为OID。 如果oid_value 的值是零,或者被字句被忽略,同时该表已经有了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

填充前面声明的索引。