powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Блокировка записи в Oracle
14 сообщений из 14, страница 1 из 1
Блокировка записи в Oracle
    #32155357
olga1999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день !
Вопрос, конечно ламерский, но все же:
1. Как в Oracle заблокировать отдельную запись в таблице ?
2. Как проверить, что эта запись заблокирована ?

Заранее thanks.
...
Рейтинг: 0 / 0
Блокировка записи в Oracle
    #32155360
LG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос не раз обсуждался, поищи.
DBMS_LOCK копай.
...
Рейтинг: 0 / 0
Блокировка записи в Oracle
    #32155364
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно например

select ... for update.
...
Рейтинг: 0 / 0
Блокировка записи в Oracle
    #32155377
.dba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 LG

>Вопрос не раз обсуждался, поищи.
>DBMS_LOCK копай.

а как, интересно, с помощью dbms_lock можно заблокировать запись в таблице?
...
Рейтинг: 0 / 0
Блокировка записи в Oracle
    #32155398
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to .dba

А вот если есть например таблица emp(emp_name, ...) и известно что некоторые ее записи заблокированы. Можно получить их список типа

Код: plaintext
1.
rowsid, emp_name, locked by user
####  smith       yes    u2


итд.?
...
Рейтинг: 0 / 0
Блокировка записи в Oracle
    #32155403
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предлагал когда-то кто-то способ "руками": открываешь курсор по всей таблице, потом по очереди пытаешься каждой записи сказать select ... for update nowait. Если получишь отлуп- значит, запись заблокирована. Только вот кем- не совсем понятно.
...
Рейтинг: 0 / 0
Блокировка записи в Oracle
    #32155446
LG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>а как, интересно, с помощью dbms_lock можно заблокировать запись в таблице?
Извиняюсь, select for update конечно же ...
Но посмотрев, что olga1999 пишет еще и в форум Delphi, посоветовал ей блокировать сущности (=записи) при помощи DBMS_LOCK.
Т.е. лочить/унлочить запись на клиенте DBMS_LOCK.REQUEST/DBMS_LOCK.RELEASE.
Пишется процедура, для блокировки/разблокировки сущности на основе DBMS_LOCK.REQUEST/DBMS_LOCK.RELEASE.
Если мы начинаем редактировать например карточку сотрудника, запрашиваем блокировку у процедуры, редактируем, релизим блокировку. При попытке повторной блокировки сущьности(=записи) получаем отлуп.
Я про это ...
...
Рейтинг: 0 / 0
Блокировка записи в Oracle
    #32155783
Фотография hinotf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а ещё есть такая фишка

пользователь 1
select ...
from ...
for update

пользователь 2
select ...
from ...
skip locked
...
Рейтинг: 0 / 0
Блокировка записи в Oracle
    #32155803
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to hinotf

Классно. Можно заблокированные записи тогда просто через MINUS получить. Правда есть один нюанс - у меня работает skip locked только в купе с for update

Код: plaintext
select * from dept for update skip locked;


а так

Код: plaintext
1.
2.
3.
4.
SQL> select * from dept skip locked;
select * from dept skip lock
                        *
ERROR at line  1 :
ORA- 00933 : SQL command not properly ended


Однако это и логично - когда делаешь просто select, то skip locked ни к чему. Чтению в Оракл ничего не машает.
...
Рейтинг: 0 / 0
Блокировка записи в Oracle
    #32155887
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помни только об одном: "skip locked" - фича недокументированная . Со всеми вытекающими.
...
Рейтинг: 0 / 0
Блокировка записи в Oracle
    #32156037
olga1999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как блокировать, теперь понятно. Как разблокировать запись ?.
Я пользуюсь Delphi.
...
Рейтинг: 0 / 0
Блокировка записи в Oracle
    #32156055
Violina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) commit
2) rollback
...
Рейтинг: 0 / 0
Блокировка записи в Oracle
    #32156173
.dba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>to .dba
>
>А вот если есть например таблица emp(emp_name, ...) и известно что
>некоторые ее записи заблокированы. Можно получить их список типа

думаю, что простым запросом через системные пердставления нельзя. По-крайней мере я такого способа не знаю :-)))
...
Рейтинг: 0 / 0
Блокировка записи в Oracle
    #32156196
LG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не поленился, посмотрел:
"Использование Oracle8/8i" стр. 504-522.
Много чего есть ...
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Блокировка записи в Oracle
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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