Все знают, что в кларе аутоинкрементал работает плохо и в принципе не может корректно работать в сетевых приложениях.Сейчас я лабаю большой проект под MYSQL и использую его родной аутоинкремент.В принципе все работает нормально, но при попытке получить идентификатор последней добавленной записи в кларе в среднем один раз из пяти возвращается 0 (хотя в родном мониторе MYSQL все работает нормально). По-видимому велосипедисты неспроста не включили MYSQL в число поддерживаемых СУБД(т.е. скорее всего не тестировали его ОДБС-драйвер).Мне все это надоело и я решил обойти эту проблему своими силами, взяв за основу идею MYSQL.
Вот решение: создаем файлик XXX без ключей из одной записи с одним полем N-ulong(файлик может быть clarion,tps и вообще любой).Далее примернр такой кусочек кода:
set(xxx);next(xxx)
if error()
xxx:n=1;add(xxx)
.
if ~error()
xxx:n=xxx:n+1;put(xxx)
.
yyy:id=xxx:n;add(yyy)
loop while errorcode()
set(xxx);next(xxx)
xxx:n=xxx:n+1;put(xxx)
yyy:id=xxx:n;add(yyy)
.
При этом ID -единственное поле праймери-ключа таблицы УУУ.
При удалении записей из УУУ файлик ХХХ не трогается.Т.е. нумерация идет нарастающим итогои. На несколько миллиардов записей хватит. Коллеги, Хотелось бы услышать Ваше мнение про такой приемчик.
Еще раз про autoincremental
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
-
- Ветеран
- Сообщения: 311
- Зарегистрирован: 08 Июль 2005, 22:04