![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Что может вызывать блокирование записи? [D7, MSSQL, Paradox]
Aleksandr © (2002-11-26 16:37:00)Суть проблемы такова - поток создает TTable, присваивает ее DataBaseName путь к файлу таблицы, открывает, вставляет туда запись, сохраняет и уничтожает. Когда при следующем прохождении этого потока создаешь TTable, открываешь ее, находишь вставленную запись Locate, а потом пытаешься сделать ей Edit - БДЕ смертельно обижается и пишет, что record locked by another user. Она же была закрыта и - абсолютно точно - уничтожена, перед тем как пересоздаться заново... Может, тут что-то с сессией надо сделать?
Romkin (2002-11-26 17:48:00) [1]Поток должен работать со своей TSession & TDatabase, и закрывать их по окончании работы (создавать эти компоненты надо в Execute, разумеется), а у TSession установить AutoSessionName - для этого и надо
Aleksandr (2002-11-26 17:29:00) [2]Не совсем понял насчет единой транзакции - это же не SQL? Но все равно спасибо, счас попробую покопать... Странно, я полагал, что с закрытием таблицы все энти динамические сессии и датабазы, создаваемые бдей, сами закроются нафиг...
Shaman (2002-11-26 17:20:00) [3]BDE кэширует таблицы и записывает их окончательно на диск только при закрытии сессии или при специальном вызове функции BDE API Как функция называется точно не помню, нашел ее в хелпе по BDE API
Johnmen (2002-11-26 17:07:00) [4]Если сделать вставку в рамках единой транзакции - БДЕ, скорее всего, не будет обижаться :)))
Да и сессия д.б. одна...