68.2. Команды BKI
create
имя_таблицы
oid_таблицы
[bootstrap
] [shared_relation
] [without_oids
] [rowtype_oid
oid
] (имя1
=тип1
[FORCE NOT NULL | FORCE NULL ] [,имя2
=тип2
[FORCE NOT NULL | FORCE NULL ], ...])Создать таблицу
имя_таблицы
с заданнымoid_таблицы
и столбцами, указанными в скобках.Непосредственно
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
, таблица создаётся как общая. Она будет содержать столбец OID, если отсутствует указаниеwithout_oids
. Дополнительным предложениемrowtype_oid
может быть задан OID типа строки (OID записи вpg_type
); если он не указан, OID генерируется автоматически. (Предложениеrowtype_oid
бесполезно, если присутствует указаниеbootstrap
, но его всё равно можно добавить для документирования.)-
open
имя_таблицы
Открыть таблицу
имя_таблицы
для добавления данных. Любая другая таблица, открытая в данный момент, закрывается.-
close
[имя_таблицы
] Закрыть открытую таблицу. Имя таблицы может задаваться для перепроверки, но это не требуется.
insert
[OID =
значение_oid
](
значение1
значение2
...)
Вставить новую строку в открытую таблицу, установив
значение1
,значение2
и т. д. в качестве значений столбцов изначение_oid
в качестве OID. Еслизначение_oid
равно нулю (0) или это указание опущено, а таблица при этом содержит OID, строке назначается следующий свободный OID.Значения NULL могут задаваться специальным ключевым словом
_null_
. Значения, содержащие пробелы, должны заключаться в двойные кавычки.-
declare
[unique
]index
имя_индекса
oid_индекса
on
имя_таблицы
using
имя_метода_доступа
(
класс_оп1
имя1
[, ...])
Создать индекс
имя_индекса
с OID, равнымoid_индекса
, в таблицеимя_таблицы
, с методом доступаимя_метода_доступа
. Индекс строится по полямимя1
,имя2
и т. д., и для них используются соответственно классы операторовкласс_оп1
,класс_оп2
и т. д. Эта команда создаёт файл индекса и добавляет соответствующие записи в каталог, но не инициализирует содержимое индекса.-
declare toast
oid_таблицы_toast
oid_индекса_toast
on
имя_таблицы
Создаёт таблицу TOAST для таблицы
имя_таблицы
. Таблице TOAST назначается OID, равныйoid_таблицы_toast
, а её индексу назначается OID, равныйoid_индекса_toast
. Как и сdeclare index
, заполнение индекса откладывается.build indices
Заполнить индексы, объявленные ранее.