51.2. BKI命令

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

创建一个叫做 tablename,OID 为 tableoid 的表,表字段在圆括弧中给出。

bootstrap.c 直接支持下列字段类型: boolbyteachar (1 字节), nameint2int4regprocregclassregtypetextoidtidxidcidint2vectoroidvector_int4 (数组),_text (数组), _aclitem(数组)。尽管我们可以创建包含其它类型字段的表, 但是我们只有在创建完 pg_type 并且填充了合适的记录之后才行。 (这实际上就意味着在系统初始化表中,只能使用这些字段类型,而非系统初始化表可以使用任意内置类型。)

如果声明了 bootstrap,那么改表将只在磁盘上创建; 不会向 pg_classpg_attribute 等系统表里面输入任何东西。 因此这样的表将无法被普通的 SQL 操作访问,直到那些记录用硬办法(用 insert 命令)填入。 这个选项用于创建 pg_class 等自身。

如果声明了 shared_relation,那么表就作为共享表创建。 除非声明了 without_oids,否则将会有 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 访问方法创建一个 OID 是 indexoid 的叫做 indexname 的索引。 索引的字段叫 name1name2 等,而使用的操作符表分别是 opclass1opclass2 等。 将会创建索引文件和恰当的系统表记录,但是索引内容不会被此命令初始化。

build indices

填充前面声明的索引。