Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Введение в СУБД HyTech.doc
Скачиваний:
11
Добавлен:
01.03.2025
Размер:
2.67 Mб
Скачать

3.4.5 Оператор переноса переменной части таблицы в постоянную pack table Оператор pack table

Слияние постоянной и дифференциальной части таблицы осуществляется при помощи оператора 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); close table TEMP; pack table TEMP with verify; select * from TEMP;

3.4.6 Оператор удаления переменной части таблицы drop diff Оператор drop diff

Для удаления файла изменений у таблицы используется оператор drop diff. Данный оператор работает только для закрытой всеми пользователями таблицы. Вследствие выполнения операции можно потерять результаты транзакций, связанных с данной таблицей, при условии, что с этой таблицей работают по сети, а команда локально выполняется на сервере (сервер запретит операцию, если кто-то из пользователей использует таблицу).

Формат:

drop diff Имя_таблицы;

Аргументы:

Аргумент

Значение

Имя_таблицы

Определяет таблицу, у которой надо удалить переменную часть. Данный оператор работает только для закрытой таблицы.

Пример:

drop table TEMP; create table TEMP (   DATA int ); insert into TEMP values(1); insert into TEMP values(2); insert into TEMP values(3); close table TEMP; drop diff TEMP; fix all; select * from TEMP;

3.4.7 Оператор переименования таблицы rename table

Оператор rename table

Переименовать таблицу. Данный оператор работает только для закрытой всеми пользователями таблицы.

Формат:

rename table Старое_имя to Новое_имя;

3.4.8 Оператор создания индекса таблицы create index

Оператор create index

При необходимости проиндексировать таблицу используется оператор create index. Индексы могут строиться лишь для таблиц, имеющих постоянную часть. Созданные индексы добавляются в ассоциатор после таблицы адресов. Данный оператор работает только для закрытой всеми пользователями таблицы.

Формат:

create index Имя_таблицы;

Аргументы:

Аргумент

Значение

Имя_таблицы

Имя таблицы, для которой необходимо создать индекс. Если таблица уже имеет индекс, то он пересоздается. Для больших таблиц это может занимать значительное время, в течение которого таблица будет недоступна другим пользователям.

Пример:

close table AUTHOR; pack table AUTHOR; create index AUTHOR;