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

Db_openinvalid/3 Внешняя База Данных

Назначение Открывает базу данных, помеченную как

ошибочную

Обращение db_openinvalid(БДанн,Имя,Место)

Домены (db_selector,string,place)

Шаблоны описания (вх,вх,вх)

аргументов

Описание База данных помечается как достоверная, когда она

закрывается или когда ее записывают на диск при

помощи операции flush; в этих случаях она остается

достоверной до внесения изменений. Однако, если

система сбрасывалась (например из-за пропадания

питания) и база данных не записывалась на диск, могут

быть неприятности. В этом случае, использование

db_openinvalid позволит продолжить работу с базой

данных, помеченной как ошибочная. Это может позволить

восстановить некоторые данные, когда все попытки

доступа к ним не удаются. В то же время, попытка

использования ошибочной базы данных после открытия ее

db_openinvalid может дать положительный результат.

Если целостность базы данных была нарушена, то

надежнее всего скопировать текст, содержащийся в

ошибочной базе данных и затем создавать новую базу

данных на основе скопированной.

Неудачное Никогда не дает.

завершение

Ошибки 1032 База данных уже открыта.

1033 Недопустимое имя файла базы данных.

1045 Невозможно открыть указанную базу данных

в этом месте.

1047 База данных помечена как ошибочная.

Пример

domains

db_selector = mydba

dbdom = city(cityno,cityname);

person(firstname,lastname,street,cityno,code)

cityno, cityname, firstname, lastname, street,

code = string

goal

db_openinvalid(mydba,"register.bin",in_file),

% Теперь вы можете только скопировать базу данных

текстовый файл

db_chains(mydba,Chain),

chain_terms(mydba,Chain,dbdom,Term,Ref),

write("\nTerm=",Term,", Ref=",Ref),

fail.