69.4. BKI 命令

  • create tablename tableoid [ bootstrap ] [ shared_relation ] [ without_oids ] [ rowtype_oid oid ] ( name1 = type1 [ FORCE NOT NULL | FORCE NULL ] [, name2 = type2 [ FORCE NOT NULL | FORCE NULL ], ...])

    • 创建一个名为* tablename *并具有 OID * tableoid *的表,并在括号中给出各列。

bootstrap.c直接支持以下列类型:boolbyteachar(1 个字节),nameint2int4regprocregclassregtypetextoidtidxidcidint2vectoroidvector,array ,_text(数组),_oid(数组),_char(数组),_aclitem(数组)。尽管可以创建包含其他类型的列的表,但是只有在创建pg_type并填充了适当的条目之后才能完成此操作。 (这实际上意味着在引导目录中只能使用这些列类型,但非引导目录可以包含任何内置类型.)

指定bootstrap时,将仅在磁盘上创建表;否则,将在磁盘上创建表。没有为此 Importingpg_classpg_attribute等。因此,除非通过困难的方式(使用insert命令)对此类条目进行访问,否则普通的 SQL 操作将无法访问该表。此选项用于自己创建pg_class等。

如果指定shared_relation,则该表将创建为共享表。除非指定without_oids,否则它将具有 OID。可以通过rowtype_oid子句指定表的行类型 OID(pg_type OID);如果未指定,将自动为其生成 OID。 (如果指定了bootstrap,则rowtype_oid子句是无用的,但无论如何也可以将其提供给文档使用.)

  • open tablename

    • 打开名为* tablename *的表以插入数据。任何当前打开的表均已关闭。
  • close tablename

    • 关闭打开的表。该表的名称必须作为交叉检查给出。
  • insert [ OID = oid_value ] ( value1 value2 ... )

    • 将* value1 value2 等用于其列值,并将 oid_value 作为其 OID 插入新表。如果 oid_value *为零(0)或省略了该子句,并且该表具有 OID,则分配下一个可用的 OID。

可以使用特殊关键字_null_指定 NULL 值。看起来不像标识符或数字字符串的值必须用双引号引起来。

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

    • 使用* amname 访问方法,在名为 tablename *的表上创建具有 OID * indexoid 的索引 indexname 。要索引的字段称为 name1 name2 等,并且要使用的运算符类别分别为 opclass1 opclass2 *等。创建索引文件并为其创建适当的目录条目,但是此命令未初始化索引内容。
  • declare toast toasttableoid toastindexoid on tablename

    • 为名为* tablename *的表创建一个 TOAST 表。 TOAST 表分配了 OID * toasttableoid *,而其索引分配了 OID * toastindexoid *。与declare index一样,索引的填充被推迟。
  • build indices

    • 填写先前已声明的索引。