![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Целостность и транзакция [D7, MSSQL, MS ACCESS]
adias © (2004-02-25 16:13:00)Есть 2 таблицы (А и Б).
Ключ таблицы А - ID
Ключ таблицы Б - ID1,+ поле ID1 для связи с ID1
таблицы А
****************
Транзакция.
вставка записи в таблицу А (формирование max(ID)+1)
вставка значения в таблицу Б (формирование max(ID1)+1)
КОНЕЦ
ТРАНЗАКЦИИ
***************************
ОПИСАНИЕ: если два юзера одновременно начнут транзакцию,
то один посылается нах... (ПРОВЕРЯЛ)
ВОПРОС: как избежать?
Примечание: пользоваться
специфическими функциями конкретной БД нельзя (там identity всякие и т.п.) и системными таблицами
тоже....
Nikolay M. (2004-02-26 10:07:00) [1]Блин, сколько же можно одно и то же спрашивать?!
http://rsdn.ru/article/db/midas_migration.xml#XSLTSECTION124143120120
adias (2004-02-26 09:06:00) [2]да, но это блокирует не запись, а страницу...
Sandman25+1 (2004-02-25 17:53:00) [3]Не знаю, как для MS SQL.
Для Informix это выглядело бы как
LOCK TABLE mytable IN EXCLUSIVE MODE
adias (2004-02-25 17:50:00) [4]а глупый вопрос, а как? :-((
Sandman25+1 (2004-02-25 17:31:00) [5]Блокировать на запись, конечно.
ADIAS (2004-02-25 17:26:00) [6]получается надо делать еще одну таблицу, для всякого мусора и чем (на что) блокировать транзакцию???
Sandman25+1 (2004-02-25 16:26:00) [7]В ANSI SQL нет ни генераторов, ни автоинкрементных полей.
Значит, придется реализовывать своим механизмом (например, делать аналог генератора через таблицу из одного поля и одной записи).