Глюк В ADO - Adotable перемешивает записи в таблице

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

тогда у тебя неизбежна ситуация с присвоением одинакового ключа таким образом...
Если два клиент одновременно, каждый в своей транзакции выполнят Select Max()+1 они получат одинаковый результат. Далее кто первый запостит - того и тапочки. Второй отвалится с ошибкой о нарушении уникальности ключа (если конечно такая есть, а если нет - нафик такой ключ?). Автоинкремент такую проблему устраняет... Дыры в значениях ни на что не влияют.
Изображение
Absurd
Сообщения: 1228
Зарегистрирован: 26 фев 2004, 13:24
Откуда: Pietari, Venäjä
Контактная информация:

Игорь Акопян писал(а):Если два клиент одновременно, каждый в своей транзакции выполнят Select Max()+1 они получат одинаковый результат. Далее кто первый запостит - того и тапочки.
Ты упустил еще то, что он считает аггрегатное значение перед каждым инсертом. В лучшем случае - это index scan и блокировка индекса
2B OR NOT(2B) = FF
Dr_Grizzly
Сообщения: 407
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

счетчик незьзя обнулить кроме как удалением и созданием таблицы заново а этого делать нельзя.

Гы, я тут столкнулся с такой надобностью, из-за того что пользователь постоянно удаляет и добавляет записи, то последовательность теряется. А если мы создадим второе поле рядом - форматом "счетчик" то он автоматом перерасчитает все записи начиная с 1. Тогда второе поле можно просто удалить :) Ну это я так, мимо проходил...
Чем проще - тем оригинальней, а значит гениально, т.к. все гениальное - просто! ;) Да! Кстати! Ctrl+V реально вставляет!!! ХDD
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

Absurd, это уже для меня слишком глубоко ;)
При похожей проблеме на Акцессе блокировки индекса не происходило... А вот одинаковые номера получались :( Правда может народу не так много было...
Народ, а в чём проблема, что ID записи не непрерывен??? нафига эта проктология? Вы что по ID чёто вычисляете, он нужен только для идентификации записи в таблице - уникальный номер, никаких повторений с начала сотворения базы...
Изображение
Ответить