2025年9月25日: PostgreSQL 18 发布!
支持的版本: 当前 (18) / 17 / 16 / 15 / 14 / 13
开发版本: devel
不支持的版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1

68.4. BKI命令 #

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

创建一个名为 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_classpg_attribute 等中写入任何内容。因此,在手动(使用 insert 命令)添加这些条目之前,表将无法通过普通 SQL 操作访问。此选项用于创建 pg_class 等自身。

如果指定了 shared_relation,则表将被创建为共享表。表行类型 OID(pg_type OID)可以选择通过 rowtype_oid 子句指定;如果未指定,则会自动为其生成一个 OID。(如果指定了 bootstrap,则 rowtype_oid 子句无用,但仍可提供以供文档记录。)

open tablename

打开名为 tablename 的表以插入数据。任何当前打开的表都会被关闭。

close tablename

关闭已打开的表。必须提供表名以进行交叉检查。

insert ( [oid_value] value1 value2 ... )

使用 value1value2 等作为其列值,向已打开的表插入新行。

NULL 值可以使用特殊关键字 _null_ 指定。看起来不像标识符或数字字符串的值必须用单引号括起来。(要在值中包含单引号,请写两次。字符串中的反斜杠转义也是允许的。)

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

在名为 tablename 的表上创建一个名为 indexname、OID 为 indexoid 的索引,使用 amname 访问方法。要索引的字段称为 name1name2 等,相应的操作符类为 opclass1opclass2 等。此命令会创建索引文件并为其创建相应的目录条目,但不会初始化索引内容。

declare toast toasttableoid toastindexoid on tablename

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

build indices

填充先前已声明的索引。

提交更正

如果您在文档中看到任何不正确、与您对特定功能的体验不符或需要进一步说明的内容,请使用 此表单 报告文档问题。