Rambler's Top100

(c)2009-2017 openinfotech.ru

СУБД HyTech

Документация
Функция htUpdateTable

htUpdateTable - Перенести изменения в постоянную часть таблицы

Назначение:

Все изменения (добавления, удаления и модификации) заносятся в журнал изменений таблицы. Постоянная часть (если она существует) не подвергается никаким изменениям. Это обеспечивает достаточно высокую сохранность данных и приемлемые скорости выполнения изменений (не требуется коррекция индексов). Однако, по мере накопления изменений в журнале растет время поиска и доступа к данным. Поэтому периодически нужно выполнять перенос изменений в постоянную часть таблицы. Периодичность этого процесса диктуется либо технологическими требованиями, либо значительным увеличением времен отработки операций. Например, этом можно делать раз в неделю, или при размере журнала более 30 тыс. модификаций и т.п.

Функция предназначена для переноса выполненных изменений в постоянную часть таблицы. При выполнении операции создаются копии новой постоянной части и ассоциатора (с расширением .$DT и .$AS), в которые переносится обновленная информация. После успешного завершения этого процесса старая постоянная часть таблицы и ее ассоциатор удаляются. А построенные вновь - переименовываются, занимая их место.

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

Прототип:

int HTAPI htUpdateTable(
  char far	*fpTableName,	/* Имя таблицы (можно без расширения) */
  char far	*fpReadPswd,	/* Пароль доступа на чтение */
  char far	*fpWritePswd,	/* Пароль доступа на запись */
  int		nReIndex, 	/* !=0 перепостроение индексов */
  int		nCheckDisk	/* !=0 проверка места на диске */
);

Параметры:

fpTableName задает имя (полное или частичное) таблицы. Имя можно задавать без расширения.
fpReadPswd задает пароль доступа на чтение. Если не нужен, можно задать NULL или пустую строку "".
fpWritePswd задает пароль доступа на запись. Если не нужен, можно задать NULL или пустую строку "".
nReIndex Флаг переиндексации. Если он отличен от нуля, то после операции обновления будет выполнено построение индексов. Удаление индексов и их перепостроение будет выполнено лишь после успешного создания новой постоянной части и ассоциатора.
nCheckDisk задает флаг предварительной оценки дискового пространства. Если параметр отличен от 0, перед выполнением операции будет произведена оценка свободного места на диске. При его недостатке функция завершится с ошибкой. Возможна небольшая погрешность оценки. Если параметр равен 0, оценка пространства не производится.

Результат:

0 при успешном завершении
отрицательное число код ошибки

Пример.

Обновить постоянную часть таблицы и построить индексы вновь. Места на диске очень много.

#define TRUE 1
#define FALSE 0
int	rc;
rc = htUpdateTable( "intensiv", NULL, NULL, TRUE, FALSE );
if( rc < 0 )
	/* Обработка ошибок */