for flooders
:: Главная :: Решения :: Статьи :: Сайт М. Дроздова :: Файловый архив :: Книга по VFP 9 :: Русский Help Online :: OFF-LINE Форум
   Л и с о в о д ы   в с е х   с т р а н,  о б ъ е д и н я й т е с ь !!!  

Список Форумов  :: Visual Foxpro, Foxpro for DOS
   :: Помощь сайту :: 

Первичный индекс и удалённые записи
Tir

Сообщений: 38
Дата: 24.07.06 10:15:56ОтветитьЦитировать
Доброго времени суток! В БД есть таблица с 2-мя полями (code, name) и первичным (primary) индексом code по полю code. При использовании этой таблицы столкнулся со следующей проблемой: если, например, пометить на удаление запись со значением в поле code, равным '001', а затем попытаться добавить запись с таким же значением в этом поле, то возникнет ошибка Uniqueness of index CODE is violated. SET DELETED ON не помагает. PACK выполнять нельзя - у пользователя нет соответствующих прав. Как можно добавить в эту таблицу запись со значением в ключевом поле, равным значению ключевого поля помеченной на удаление записи? Заранее благодарен.
Ratings: 0 negative/0 positive

Re: Первичный индекс и удалённые записи
piva
[Болтун]
Автор

Сообщений: 18532
Откуда: Курган
Дата: 24.07.06 10:18:47ОтветитьЦитировать
Для Primary ключа - никак


------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive

Re: Первичный индекс и удалённые записи
leonid

Сообщений: 2565
Откуда: Рига
Дата: 24.07.06 10:34:40ОтветитьЦитировать
Лучше всего первичные ключи не наделять каким-либо реальным смыслом, тогда эта проблема просто не возникает, дается новое значение - и все. Но если уж так случилось, то нужно искать новое значение среди удаленных записей и, если оно найдено, не добавлять новую запись, а сделать recall удаленной и очистить все поля, кроме первичного ключа.
Ratings: 0 negative/0 positive

Re: Первичный индекс и удалённые записи
mvictor

Сообщений: 48
Откуда: Киев
Дата: 24.07.06 10:45:26ОтветитьЦитировать
а чем не подходит фильтр not deleted() для индекса ?
Ratings: 0 negative/0 positive

Re: Первичный индекс и удалённые записи
Tir

Сообщений: 38
Дата: 24.07.06 10:54:33ОтветитьЦитировать
mvictor
а чем не подходит фильтр not deleted() для индекса ?
Может быть вопрос покажется глупым, но как накладывать фильтр на индекс?
Ratings: 0 negative/0 positive

Re: Первичный индекс и удалённые записи
AlexSSS

Сообщений: 6110
Откуда: Tallinn, Estonia
Дата: 24.07.06 11:02:59ОтветитьЦитировать
а я настоятельно порекомендую прислушаться к совету Леонида и добавить еще одно поле ID I, которое будет использоваться как первичный индекс и не будет нести никакой смысловой нагрузки.

Это в будущем очень сильно облегчит тебе жизнь.
Ratings: 0 negative/0 positive

Re: Первичный индекс и удалённые записи
MichaelD

Сообщений: 7578
Дата: 24.07.06 11:04:24ОтветитьЦитировать
Tir
Может быть вопрос покажется глупым, но как накладывать фильтр на индекс

Table design на закладке [Indexes] есть поле Filter, куда и пишем типа !DELETED()


------------------
С уважением,
Михаил Дроздов, Пермь, Россия
Ratings: 0 negative/0 positive

Re: Первичный индекс и удалённые записи
mvictor

Сообщений: 48
Откуда: Киев
Дата: 24.07.06 11:07:13ОтветитьЦитировать
командой я никогда не делал, но похоже это "[FOR lExpression]"

INDEX ON eExpression TO IDXFileName | TAG TagName [BINARY]
[COLLATE cCollateSequence] [OF CDXFileName] [FOR lExpression]
[COMPACT] [ASCENDING | DESCENDING] [UNIQUE | CANDIDATE] [ADDITIVE]


ну или в дизайнере на вкладке indexes поле Filter
Ratings: 0 negative/0 positive

Re: Первичный индекс и удалённые записи
Tir

Сообщений: 38
Дата: 24.07.06 11:23:24ОтветитьЦитировать
Большое спасибо. С фильтром на индекс всё вроде бы работает.

2AlexSSS
Уже прислушался. В дальнейшем реализую. Просто введение нового ключевого поля требует капитального изменения логики программы. А проблему надо решить быстро (аврал типа ).
Ratings: 0 negative/0 positive

Re: Первичный индекс и удалённые записи
Влад Колосов

Сообщений: 22664
Откуда: Ростов-на-Дону
Дата: 24.07.06 12:09:03ОтветитьЦитировать
Собственно, ключ не обязательно должен быть возрастающий по порядку, он может быть любым случайным числом.


------------------
Совершенство - это не тогда, когда нельзя
ничего прибавить, а тогда, когда нечего убавить.
Ratings: 0 negative/0 positive

Re: Первичный индекс и удалённые записи
leonid

Сообщений: 2565
Откуда: Рига
Дата: 24.07.06 12:34:34ОтветитьЦитировать
Индексы с фильтром имеют по крайней мере один недостаток - Рашмор их не понимает
Ratings: 0 negative/0 positive

Re: Первичный индекс и удалённые записи
Naomi

Сообщений: 1796
Дата: 24.07.06 16:05:17ОтветитьЦитировать
Read More INDEX Smarts in Code Focus Mag.
Ratings: 0 negative/0 positive



Извините, только зарегистрированные пользователи могут писать в этом форуме.

On-line: 44 Chemberzhy  and Guests: 43


© 2000-2018 Fox Club 
Яндекс.Метрика