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