Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Блокировка строки / 12 сообщений из 12, страница 1 из 1
26.06.2003, 15:00:55
    #32192581
Хочу знать
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокировка строки
Привет. Можно ли в Oracle заблокировать для редактирования какую нибудь строку в таблице. Это нужно для того, чтобы если один юзер работает с этой строчкой другие с ней не работали.
...
Рейтинг: 0 / 0
26.06.2003, 15:12:09
    #32192608
gda
gda
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокировка строки
select ... for update ...
...
Рейтинг: 0 / 0
26.06.2003, 15:24:52
    #32192649
Violina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокировка строки
А если еще хочется чтобы другие юзеры не ждали пока снимится блокировка с этой строки а сразу получали отлуп если она заблокирована, то эти юзеры должны вызывать

select ... for update ... nowait;
...
Рейтинг: 0 / 0
26.06.2003, 15:50:22
    #32192725
ЖУК1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокировка строки
"А если еще хочется чтобы другие юзеры не ждали пока снимится блокировка с этой строки а сразу получали отлуп если она заблокирована, то эти юзеры должны вызывать

select ... for update ... nowait;"

а зачем select for update.

обновлять то не всегда надо. если это просто просмотровая форма.
...
Рейтинг: 0 / 0
26.06.2003, 15:58:51
    #32192743
Violina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокировка строки
обновлять то не всегда надо. если это просто просмотровая форма.

Это уже зависит от логики приложения. Если просто просмотровая форма, то конечно не надо, вообще тогда блокировки пофигу. Однако если все же данные меняются, то может быть не очень приятно - ввел новые данные нажал submit и приложение подвисло в ожидании снятия блокировки. А потом еще и отлуп получить можно.

select ... for update ... nowait

можно делать не сразу при выборке а непосредственно перед выполнением DML операторов.
...
Рейтинг: 0 / 0
26.06.2003, 17:00:33
    #32192875
Жучило
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокировка строки
"можно делать не сразу при выборке а непосредственно перед выполнением DML операторов."

а как этотот момен непосредственно перед выполнением DML операртора определить?
...
Рейтинг: 0 / 0
26.06.2003, 17:06:44
    #32192888
Хотящий
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокировка строки
Большой спасиб
...
Рейтинг: 0 / 0
26.06.2003, 17:22:36
    #32192926
Жучило
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокировка строки
и как ты делать будешь ?
...
Рейтинг: 0 / 0
27.06.2003, 08:45:38
    #32193294
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокировка строки
Легко, например если в форме (Delphi) клиент уже изменил некое поле, но еще не нажал кнопку Apply, он явно хочет изменить запись. Делаем select for update nowait. Если возвращает ошибку, не судьба ему редактировать, вернуть прежнее значение в отредактированное поле и обругать его нехорошим словом. Уверен, что в Forms-ах можно сделать, что-то анологичное, сам с ними не работаю.
...
Рейтинг: 0 / 0
27.06.2003, 10:07:24
    #32193366
Violina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокировка строки
и как ты делать будешь ?

Там где в приложении посылается DML запрос, непосредственно перед ним и выполнять а потом проверять на успешность, если все плохо сообщать пользователю что он изменить запись не сможет, всяко лучше чем висящее ожидание с последующим отлупом.

Здесь вопрос скорее когда блокировать. Я делаю обычно так.

Выбираю набор записей без блоикирования for update для просмотра. В маске у меня есть кнопка редактировать, выбрав некоторые записи и нажав ее - уже пытаюсь блокировать данные записи for update nowait. При этом сразу выясняется сможет ли пользователь изменить эти записи или нет и гарантируется что другой этого сделать не сможет. Это и экономит усилия пользователя - не совсем приятно вносить изменения а потом получать отлуп.
...
Рейтинг: 0 / 0
27.06.2003, 10:13:39
    #32193371
hinotf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокировка строки
Есть ещё недокументированная фича select ... for update... skip locked
...
Рейтинг: 0 / 0
27.06.2003, 11:51:09
    #32193500
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокировка строки
Хорошо конечно, но чем оно помогает в данном контексте ?
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Блокировка строки / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]