Слияние постоянной и дифференциальной части таблицы осуществляется при помощи оператора pack table.
Таблица, в общем случае, состоит из трех частей:
· Постоянная часть таблицы;
· Журнал изменений;
· Служебная информация.
После создания таблицы имеется лишь ее описание и «пустой» журнал изменений. Все операции добавления, удаления или модификации записей фиксируются в журнале изменений.
Журнал изменений состоит из двух файлов – оглавления и собственно журнала.
Постоянная часть таблицы появляется после выполнения операции переноса изменений в постоянную часть pack table, журнал изменений при этом обнуляется. В процессе дальнейших модификаций таблицы все изменения заносятся опять-таки в журнал. Постоянная часть не меняется до следующей операции pack table.
Постоянная часть таблицы состоит также из двух файлов – области данных и ассоциатора. Записи в области данных хранятся в сжатом виде (за счет символьных полей), поэтому имеют переменную длину. Ассоциатор содержит таблицу адресов записей.
Служебная информация о таблице содержит описатель структуры записи и файлы для поддержки работы в сети.
Данный оператор работает только для закрытой всеми пользователями таблицы. Вследствие выполнения операции можно потерять результаты транзакций, связанных с данной таблицей, при условии, что с этой таблицей работают по сети, а команда локально выполняется на сервере (сервер запретит операцию, если кто-то из пользователей использует таблицу).
Формат:
pack table Имя_таблицы [ with verify ];
Аргументы:
Аргумент
Значение
Имя_таблицы
Имя таблицы, в которой необходимо осуществить перенос переменной части в постоянную.
with verify
Перед проведением операции произвести проверку целостности таблицы. Если таблица не прошла проверку, то операция не выполняется.
Пример:
drop table TEMP;
create table TEMP ( DATA int );
insert into TEMP values(1); insert into TEMP values(2); insert into TEMP values(3);