Вниз
Скачать: CL | DM;

Значение автоинкрементного поля   Найти похожие ветки 

← →
Marat111   (2003-05-22 15:25) [0]

Необходимо определить следующее значение автоинкрементного поля до выполнения Вставки записи


← →
гончий   (2003-05-22 15:31) [1]

Хотя бы для приличия СУБД напиши.


← →
alex_bredin ©   (2003-05-22 15:32) [2]

select max(id)+1


← →
AlexAlex   (2003-05-22 15:33) [3]

Надежно-ниикак: можно попытаться спрогнозировать (select max(id)+1 from table), но в многопользовательской среде это будет не всегда работать правильно. Можно попытаться самому формировать значения из программы или через триггер, но тут пойдут дополнительные проблемы. Лучше всего попытаться обойтись без подобных предсказаний.


← →
WarLord ©   (2003-05-22 15:55) [4]


> alex_bredin © (22.05.03 15:32)
> select max(id)+1

необязательно...может там кучу записей уже удалили
в СУБД с генераторами (напр Oracle) можно легко узнать, а например в парадоксе или MSSQL не узнаешь никак


← →
marat111   (2003-05-22 17:56) [5]

через BDE связываюсь с Paradox


← →
Dred2k ©   (2003-05-22 19:39) [6]

Если для парадокса, то тебе по-любому нужен некий синхронизирующий ресурс. В этом плане может выступить либо таблица с последним использованным значением ключа, либо обычный текстовый файл с этим же значением. Таблица или файл при получении очередного значения блокируются (exclusive в обоих случаях). Более красивое решение, на мой взгляд, - локирование таблицы с ключом на время вставки новой записи (через TTable.LockTable(ltWrite)). В случае неуспеха - несколько повторов через разумный делэй, в крайнем случае - соответсвующее сообщение пользователю.
Разумеется, при этом есть вопросы. Но это реальный надежный вариант. Во многих серверах, конечно, проще..., но как говорится - "работать надо". ;)


← →
Dred2k ©   (2003-05-22 19:41) [7]


> локирование таблицы с ключом

Точнее - "обновляемой таблицы".



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.012 c
4-35112
Gefest
2003-04-14 14:39
2003.06.12
Как правильно обработать событие LBN_DBLCLK?


3-34718
Крот
2003-05-23 12:51
2003.06.12
Перемещение курсора


3-34675
Weare
2003-05-22 14:05
2003.06.12
Работа с CashedUpdates


4-35116
Blacked
2003-04-14 17:21
2003.06.12
Как изменить стиль отдельных элементов формы ...(+++)


14-34988
ret_777
2003-05-26 12:46
2003.06.12
восстановление базы данных InterBase




   Наверх