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
填充前面声明的索引。