|
Определение блокирования записи
|
|||
---|---|---|---|
#18+
Надо сделать такую вещь в проге - если один пользователь редактирует строку таблицы, то второй пользователь может только просмотреть данные этой строки. Пишется в Делфе, юзается ODAC. Данные из таблицы извлекаются через SELECT FOR UPDATE. Соответственно, когда второй юзер пытается прочитать эти же данные, он получает ORA-00054 resource busy and acquire with NOWAIT specified... Подскажите, куда копать ? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2002, 05:41 |
|
Определение блокирования записи
|
|||
---|---|---|---|
#18+
А второй тоже SELECT FOR UPDATE делает или без SELECT без UPDATE? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2002, 09:12 |
|
Определение блокирования записи
|
|||
---|---|---|---|
#18+
Да, второй тоже делает SELECT FOR UPDATE. Фактически, нужно перед выполнением запроса проверять, не заблокирована ли запись. А как это сделать ? Может, где в таблице блокировок есть информация об этом ? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2002, 09:54 |
|
Определение блокирования записи
|
|||
---|---|---|---|
#18+
В ODAC'овском TCustomOraQuery, чьим потомком является, к примеру, TOraQuery, есть проперть SQLLock. Почему бы тогда выборку всех требуемых записей делать без блокировок, а при начале изменений пытаться блокировать конкретную запись через TCustomOraQuery.Lock? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2002, 10:22 |
|
Определение блокирования записи
|
|||
---|---|---|---|
#18+
"Да, второй тоже делает SELECT FOR UPDATE" Тогда непонятно, почему ты удивляешься. Попытка заблокировать запись, которая уже заблокирована приводит к "ORA-00054 resource busy and acquire with NOWAIT specified" как и положено. Если ты хочешь что-бы при таком запросе тебя не прокатывали, тогда укажи фразу WAIT в запросе, тогда если запись была уже заблокирована, втрой запрос будет ждать, пока блокировка первого запроса не окончится. Если же ты хочешь просто просмотреть данную строку, тогда не указыай в запрсе UPDATE, вот и всё ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2002, 10:32 |
|
Определение блокирования записи
|
|||
---|---|---|---|
#18+
"Фактически, нужно перед выполнением запроса проверять, не заблокирована ли запись. А как это сделать ? " Надо обработку исключения сделать для данной ошибки ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2002, 10:34 |
|
Определение блокирования записи
|
|||
---|---|---|---|
#18+
В общем, как обычно, сначала задал вопрос, а потом задумался над ним сам :-) Разобрался :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2002, 11:02 |
|
|
start [/forum/topic.php?fid=52&tid=1992804]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
28ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
others: | 261ms |
total: | 379ms |
0 / 0 |