Как указать «нет обновления» в заявлении выбора оракула? - PullRequest
0 голосов
/ 17 июня 2011

В простом утверждении оракула я должен выбрать строки без блокировок. Я думаю, что это можно сделать с помощью select без обновления. Поправьте меня если я ошибаюсь ? Если нет, может кто-нибудь, пожалуйста, дайте мне знать формат для него?

Ответы [ 2 ]

2 голосов
/ 17 июня 2011

Да, если вы не укажете for update в select, значит, вы не заблокировали ни одной строки.

1 голос
/ 17 июня 2011

Если ваш код выполняет только выбор (а не «выбор для обновления»), никакие блокировки не будут получены для записи.Если у вас есть DML (Обновить, выбрать, удалить) в строках или «Выбрать для обновления», то у вас есть возможность блокировки.


** Старый ответ


Вы, вероятно, ищете предложение "FOR UPDATE NOWAIT" в Oracle, но его поведение не такое, как у васописано.

Он попытается получить блокировку для строки / строк в элементе выбора и вернет ошибку, если блокировка уже получена кем-то другим.

Session1: (Нет фиксации еще .. СтрокаЗаблокировано этим утверждением)

SQL> update scott_emp 
  2    set sal = sal + 100
  3    where empno = 7839;

1 row updated.

Session2:

SQL> select * from scott_emp
  2  for update nowait;
select * from scott_emp
              *
ERROR at line 1:
ORA-00054: resource busy and acquire with NOWAIT specified
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...