удаление записи при primery Key | |
---|---|
vic38 Автор |
Подскажите новичку
База данных, в ней таблица custom.dbf имеет primery Key. После удаления записи не удается добавить новую запись в таблицу,- выдается соощение об ошибке – нарушение уникальности индекса. П о м о г и т е плиз Спасибо всем кто ответит. Семеныч Best regards, vic mailto:hvitas38@mail.ru |
Re: удаление записи при primery Key | |
---|---|
Mavy Сообщений: 246 Дата регистрации: 04.08.2004 |
Наверно ты добавляешь запись с тем же значением Primery key, что и в только что удаленной. Такое не ройдет, т к ты наверняка удаляешь командой DELETE, а это не физическое удаление, а только пометка об удалении.
ЗЫ Приведи кусочек кода, если я не о том... Отредактировано (12.03.05 09:41) ------------------ |
Re: удаление записи при primery Key | |
---|---|
matod Сообщений: 3062 Откуда: Иркутск Дата регистрации: 31.10.2001 |
Mavy прав, причина скорее всего в том, что ты пытаешься добавить запись с значением ключа которое уже есть в таблице, хотя и удаленное. IMHO самое правильное - генерировать заведомо неповторяющиеся значения. Например, используя дополнительную таблицу для хранения последнего значения и увеличивая каждый раз это значение на 1.
Много интересного о генерации уникальных значений можно найти на этом сайте, воспользовавшись поиском, а так же в разделе База Знаний. |
Re: удаление записи при primery Key | |
---|---|
Guest_Petrov |
INDEX TAG ... FOR !Deleted() Так или по типу того короче фильтр установи.
|
Re: удаление записи при primery Key | |
---|---|
Владимир Максимов Сообщений: 14095 Откуда: Москва Дата регистрации: 02.09.2000 |
Цитата:А вот этого делать ни в коем случае не надо! Это же Primary-индекс! Такие индексы (с FOR-условием) не участвуют в оптимизации. Вообще-то, надо написать корректную функцию генерации значения ключа. Не надо использовать значение ключа ранее удаленных записей. Ни в коем случае не генерить ключ как MAX()+1! Это верный путь создания себе проблем. Обычно создают служебную табличку, которая хранит код последнего использованного (или первого НЕ использованного) значения ключа для каждой таблицы. Когда надо получить очередное значение ключа обращаются к этой служебной таблице, наращивая сохраненное в этой таблице значение. Сделай поиск по этому форуму по ключевому слову NewID. Также можешь посмотреть стандартный проект примеров Solution.pjx (в нем форму NewId). Если версия VFP 8 и выше, то используй для ключевого поля Integer(Autoincrement) |
Re: удаление записи при primery Key | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Hi, Владимир!
Цитата:Ситуации разные бывают... Например связи типа 1-к-0-или-1 - где PK не генерируются, а берутся из другой таблицы. Хотя конечно в ДАННОМ случае скорее всего неверный аглоритм получения ID виноват (возможно вообще прямой ввод кода ) Цитата:Это не страшно - можно REGULAR индекс завести параллельно - если уж объём большой и скорость пострадала... Т.е. смысл такого индекса - исключительно в контроле дубликатов среди неудалённых записей. ------------------ WBR, Igor |
© 2000-2024 Fox Club  |