Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Целостность и транзакция [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 нет ни генераторов, ни автоинкрементных полей.
Значит, придется реализовывать своим механизмом (например, делать аналог генератора через таблицу из одного поля и одной записи).


Наверх

Титульная страница Поиск, карта сайта Написать письмо