logo
TurboProlog / Документация / TOM_1

Db_openinvalid/3

Предикат позволяет открыть базу данных, которая ранее была объявлена

"непригодной".

db_openinvalid(Dbase, Name, Place) /* (i,i,i) */

Если в процессе обновления базы данных было отключено электропитание

компьютера, все содержимое базы данных может быть утеряно, так как часть

буфера могла быть не переписана на диск. После этого система объявляет

базу данных "непригодной".

База данных объявляется "непригодной" после обработки любого преди-

ката, изменяющего содержимое базы данных, изменяющего содержимое базы

данных. Эти предикаты: chain_inserta, chain_insertz, chain_insertafter,

term_replace, term_delete, chain_delete, btree_create, key_insert,

key_delete. База данных объявляется "пригодной" снова после того, как она

закрывается предикатом db_close, или после того, как происходит обращение

к db_flush для освобождения буферов.

Используя db_openinvalid, возможно продолжение обработки базы дан-

ных, если она была объявлена непригодной. При этом возможно восстановле-

ние части данных, если все дублирующие файлы были удалены. Однако, все

попытки использования непригодной базы данных после открытия ее с помощью

db_openinvalid могут привести к нежелательным результатам.