Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как проверить целостность индекса? / 7 сообщений из 7, страница 1 из 1
13.05.2004, 15:45
    #32516539
e_mikhailov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как проверить целостность индекса?
Народ, подскажите пожалуйста, с помощью какой функции (набора функций) можно проверить целостность индекса в таблице FoxPro?
...
Рейтинг: 0 / 0
13.05.2004, 17:03
    #32516759
Андрей Давыдов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как проверить целостность индекса?
zap
...
Рейтинг: 0 / 0
14.05.2004, 10:46
    #32517459
e_mikhailov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как проверить целостность индекса?
А при чём тут ZAP? Ведь эта функция удаляет все записи из таблицы, а мне нужно программно узнать, испорчены ли индексы в таблице, или всё в порядке...
...
Рейтинг: 0 / 0
14.05.2004, 10:58
    #32517484
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как проверить целостность индекса?
Если по команде USE нет ругани, то считай индексы нормальными. Если речь идет не о структурном индексном файле, то проверяешь ругань на команду SET INDEX

Других способов нет.

Проверка же того, что в индексе учтены все существующие записи таблицы по времени сопоставима с переиндексацией. Т.е. не имеет практического смысла.
...
Рейтинг: 0 / 0
14.05.2004, 11:02
    #32517500
if
if
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как проверить целостность индекса?
ламерский вопрос - а что значит целостность индекса?
Т.е. если есть подозрение на некорректность индекса (не находит записи и т.д.), то я так мыслю нужно переиндексировать. Может не так понял вопрос?
Насчёт ZAP парень просто прикололся - не обращай внимания...
...
Рейтинг: 0 / 0
14.05.2004, 14:00
    #32518151
XAndy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как проверить целостность индекса?
Полноценная проверка индексов действительно не целесообразна, но если поставлена задача оперативного обнаружения сбоя, то кое-что все-таки можно сделать. Сбой чаще происходит при добавлении записей, а не при исправлении данных (впрочем, исправление данных в идеале вообще должно отсутствовать как класс). Поэтому можно ограничиться контролем корректности первичного ключа таблицы.

Я использовал следующий алгоритм. Блокируем запись в служебной таблице, являющейся счетчиком первичных ключей и берем оттуда значение последнего использованного ключа. Делаем set deleted off (на случай, если последняя физическая запись таблицы удалена), устанавливаем set order на первичный ключ таблицы и сравниваем значения ключа из таблицы ключей, значение при go (reccount()) и значение при go bottom - все значения должны совпадать. Снимаем блокировку.

Работает быстро, поэтому можно использовать при открытии таблиц. Конечно, зависит от реализации механизма получения ключей (ключ должен получаться непосредственно перед записью и не зависеть от каких-то логических условий сохранения, т.е. если ключ брался, то это должно означать, что была попытка записи данных). Собственно, все. Может понадобится
...
Рейтинг: 0 / 0
14.05.2004, 14:40
    #32518288
e_mikhailov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как проверить целостность индекса?
XAndy, да, действительно, так всё заработало!

Спасибо!
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как проверить целостность индекса? / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]