![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Хочу аналог интербейсовского генератора в аксесе...
AccessLamer © (2002-11-06 11:49:00)Возможен ли сабж?
Зы. Автоинкрементное поле не катит, так как id нужно уникальным для базы, а не для отдельной таблички.
Да, работать с базой буду через ADO.
Зы2. Сорри за возможно ламерский вопрос, я акссесс только три дня назад увидел, раньше как только мог, обходил стороной.. Не судьба видно..
Jeer (2002-11-06 12:57:00) [1]>так как id нужно уникальным для базы
Этот прием работает как для каждой таблицы, так и для выделенной таблицы, где будет уникальным уже для базы
Ihor Osov'yak (2002-11-06 12:52:00) [2]2 Jeer © (06.11.02 12:43)
Наверно так придется и делать. Но пермишн уж очень пострадает. :-(
Jeer (2002-11-06 12:46:00) [3]Кому покажется это странным - вспомните, что доступ в сеть Ethernet вообще построен на коллизиях (соревновании в доступе и конфликтах).
Такие системы как правило более устойчивы, т.к. в них заложен стохастический принцип работы, а не детерминированный.
Jeer (2002-11-06 12:43:00) [4]Можно использовать след прием - работает..
1.SELECT MAX(ID) FROM..
2.idm := field[0].AsInteger + 1;
Т.о. на клиента имеешь предполагаемый max id
3.Затем добавляешь запись с данным idm и на исключении повторяешь ограниченное число раз до успеха или отказа.
Если отказ - значит кто-то успел раньше вставить данный idm
поэтому повторяешь с 1 по 3 опять же зданное число раз.
Оповещаешь пользователя при полном отказе.
Число вн и внеш. повторений определяется сеткой, СУБД, числом пользователей.
Обычно 5-6 для внеш. и 2-3 для внутр.
Все это обрамляется транзакцией, если поддерживается.
Проблем за несколько лет использования такого приема не замечено.
Применять там где мешается инкремент и нет других способов генерации уникальных id.
Шутки ради было откатано и на IB - без проблем.
Romkin (2002-11-06 12:13:00) [5]Ну то, что несколько клиентов - какая разница??? GUID уникальные будут, хоть как извращайся
Нормальных ресурсов для Акксесса нет по определению, ИМХО :-))
Попробуй форумы (по MSSQL) на www.sql.ru www.relib.com
А вот монотонно возрастающий - явно табличка в БД, с блокировкой доступа (как на аксесс блокировать - понятия не имею)
или для бекапа запоминать использованные GUID в отдельной таблице
sniknik (2002-11-06 12:12:00) [6]Только через отдельную таблицу с автоинкрементом возможно (по моему), в общем придется изгалятся.
Ihor Osov'yak (2002-11-06 12:01:00) [7]2 Romkin © (06.11.02 11:55)
Совет дельный, но мне нужно моннотоно возрастающий, в тч для организации баккупа вновь доданных записей.
Во вторых, генерация на стороне клиента не идет, так как не исключено, что работать будут несколько клиентов одновременно.
Да, и где в инете есть нормальный ресурс по акксесу, типа этого по делфи (желательно рускоговорящий)?
Alexandr (2002-11-06 11:59:00) [8]бедный? С аццесс?
Ihor Osov'yak (2002-11-06 11:57:00) [9]2 Alexandr © (06.11.02 11:50)
Рад бы, но заказчих хочет многоплатформенную поддержку дб, втч аксесс. Типа бедный или не очень продвинутый работает с аксеес, а нормальный - юзает другой движок
ЗІ. Сорри за маскировку под псевдо, все же немного стыдно немного ламерские вопросы задавать..
Romkin (2002-11-06 11:55:00) [10]А ты GUID генери и вставляй, в MSSQL так и делают :-))
uuidCreate, CoCreateGUID... 16 байт
Alexandr (2002-11-06 11:50:00) [11]забудь про Аццесс