2016-07-19 13 views
0

У меня есть таблица строк заказа клиента (sDetail); В записях есть индекс, который фактически является индексом кандидата с ключом задания заказа плюс STR (номер строки). Это используется для извлечения строк определенного порядка.VFP. Удаленные записи - индексирование - воссоздание записей

Существует также первичный индекс в таблице sDetail, который является последовательным идентификатором.

В распоряжение могут быть внесены изменения. Если строка заказа удалена пользователем, я помечаю запись как удаленную в этой таблице; Когда я обрабатываю, я обычно запускаю SET DELETED ON, поэтому пользователь не видит эти удаленные записи.

Если, однако, он воссоздает линию, я могу создать ошибку «Нарушение индекса нарушено». Я это понимаю. Чтобы избежать этой ошибки, я вижу два возможных подхода:

Либо: Включите выражение фильтра на индекс «для DELETED()!», Так что эти записи не видны во время выполнения

Или: Когда я хотите проверить наличие записи для определенной строки, SET DELETED OFF, проверить наличие записи и, при необходимости, ЗАПИСАТЬ. Затем верните SET SET DELETED ON.

Что делают другие разработчики? Или есть лучший способ?

Спасибо

+0

Мне не нравится удалять и отзывать вообще. Индекс для! Dele() просто еще больше усложняет ситуацию. Я бы просто сделал это регулярным индексом, а не индексом кандидата. Все упрощает. – Missy

ответ

1

Существует не одно правило, которое вырезанные в камне. Напоминание - один из способов, которыми я использую (мне редко приходится вспоминать). Мне лично не нравится индексы! Deleted() (если я использую, то я создаю в качестве растрового индекса).

Третий вариант заключается не в том, чтобы сделать такой индекс «кандидатом». Как вы сказали, единственная цель этой линии - заказывать, это не должно быть индексом кандидата.

+0

Спасибо, Четин. Да, возможность сделать индекс не кандидатом кажется разумным. Поскольку у меня есть первичный индекс в этой таблице, идентификатор записи (даже если я его никогда не использую), я понимаю, что я свободен, чтобы «отказаться от кандидата» этого индекса. И тогда проблема «нарушения единственности» уходит. –