Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Блокировка записи / 7 сообщений из 7, страница 1 из 1
16.11.2010, 11:31
    #36958956
Parovozik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокировка записи
Всем привет!Делаю многопользовательскую форму, когда один пользователь изменяет запись, она блокируется для другого пользователя, который хочет изменить ту же запись, ему (2-му меняющему) выводится сообщение "Невозможно зарезервировать запись (2 попыток). Продолжить попытки?", ну и кнопки "Да"/"Нет". Жмем "да" - это же сообщение продолжает выводиться и дальше, жмем "нет"-ошибка FRM-40501. Хотелось бы сделать так, чтобы эти сообщения и ошибка не появлялись, а вместо них предупреждение - "Запись недоступна для изменения, с ней работает другой пользователь". Не подскажете решение?
...
Рейтинг: 0 / 0
16.11.2010, 16:11
    #36959833
-=APS=-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокировка записи
On-LOCK trigger
...
Рейтинг: 0 / 0
17.11.2010, 12:00
    #36961233
Parovozik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокировка записи
APS,
а что в нем написать, чтобы он не срабатывал для пользователя(срабатывал только блокируя запись), который первым блокирует запись?ну то есть, чтобы предлагаемое мною предупреждение выдавалось всем другим пользователям, которые пытаются изменить запись.
...
Рейтинг: 0 / 0
17.11.2010, 13:44
    #36961578
Jacobs Kaive
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокировка записи
в триггере лоч запись с nowait и выводи ошибку если что
...
Рейтинг: 0 / 0
18.11.2010, 14:52
    #36964037
-=APS=-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокировка записи
Parovozik
А поискать не пытались? Говорят, очень полезная штука такая есть - гугл называется.
Кроме того, прямо на этом этом подфоруме недавно была такая тема.
ON-LOCK, ON-ERROR
...
Рейтинг: 0 / 0
22.11.2010, 10:42
    #36969082
Parovozik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокировка записи
-=APS=-,
Зачем эта издевка была, я вот не понимаю, вы пытаетесь за счет меня поднять самооценку? Молод и неопытен, каюсь, могу чего-то недопонимать...
По делу, искать, конечно же, пытался, только пока решить описанную проблему не получилось, отложил, буду смотреть вашу ссылку
...
Рейтинг: 0 / 0
10.11.2011, 12:58
    #37519747
pan159
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокировка записи
Эта тема возникает с поразительной регулярностью в этой ветке и в главной оракловой. Поэтому привожу свой вариант решения для поиска того, кто блокирует.

Создаем резидентную процедуру:
function who_blocked( idi number) return varchar2 is
inv_number number;
uname varchar2(80);
begin
select id into inv_number from invoice where id = idi for update nowait; -- это моя конкретная таблица и запись которую я проверяю на предмет блокировки, id - PK
return 'FREE'; -- запись свободна
exception
when NO_DATA_FOUND then
return 'NOT_FOUND'; -- задан ошибочный ключ записи
when others then
select oracle_username
into uname
from
(select s.username,
l.sid,
s.ACTION,
trunc(l.id1 / power(2, 16)) rbs,
bitand(l.id1, power(2, 16) - 1) + 0 slot,
l.id2 seq
from v$lock l, v$session s
where l.type = 'TX'
and l.sid = s.sid
and s.SCHEMANAME = 'Название схемы, где размещается таблица') a,
all_objects uo,
v$locked_object lo
where lo.XIDUSN = a.rbs
and lo.XIDSLOT = a.slot
and lo.XIDSQN = a.seq
and uo.object_id = lo.OBJECT_ID
and lo.SESSION_ID = a.SID
and uo.object_name = 'Название таблицы ( в моем случае -invoice)';
return 'Locked by '||uname;
end;

Надо будет дать права на чтение v$session, v$lock, v$locked_object всем юзерам-потребителям

В любом подходящем триггере типа key-others обращаемся для проверки записи на предмет блокировки.
...
Рейтинг: 0 / 0
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Блокировка записи / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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