Предложение FOR UPDATE в Операторе SELECT

  • Блокирует строки таблицы EMPLOYEES, где job_id является SA_REP.

Предложение FOR UPDATE в Операторе SELECT
  • Блокировка освобождается, только когда Вы выполняете ROLLBACK или COMMIT.

  • Если оператор SELECT пытается заблокировать строку, которая заблокирована другим пользователем, база данных ожидает, пока строка не становится доступна, и затем возвращает результат оператора SELECT.

Когда Вы выполняете оператор SELECT в базе данных, чтобы запросить некоторые записи, никакие блокировки не устанавливаются на выбранные строки. Вообще, это требуется, потому что число записей, заблокированных в любой момент времени, (по умолчанию) сводится к абсолютному минимуму: только те записи, которые были изменены, но еще не зафиксированы, блокируются. Даже тогда другие пользователи будут в состоянии считать эти записи, как они выглядели перед изменением ("исходный образ" данных). Иногда, однако, можно захотеть заблокировать ряд записей даже до того, как Вы измените их в своей программе. Oracle предлагает предложение FOR UPDATE оператора SELECT, чтобы выполнить эту блокировку.

Когда Вы выполняете оператор SELECT ... FOR UPDATE, система управления реляционной базой данных (RDBMS) автоматически получает монопольные блокировки на уровне строки для всех строк, идентифицированных оператором SELECT, таким образом делая эти записи доступными “только для Ваших изменений.” Никто больше не будет в состоянии изменить любую из этих записей, пока Вы не выполните ROLLBACK или COMMIT.

Можно добавить дополнительное ключевое слово NOWAIT к предложению FOR UPDATE, чтобы сказать серверу Oracle не ожидать, если таблица была заблокирована другим пользователем. В этом случае управление будет сразу возвращено к Вашей программе или к Вашей среде SQL Developer так, чтобы можно было выполнить другую работу или просто подождать некоторые время перед тем, как попробовать еще раз. Без предложения NOWAIT, Ваш процесс блокируется до тех пор, пока таблица не станет доступна, когда блокировки будет освобождены другим пользователем через выполнение команды COMMIT или ROLLBACK.

Далее: Синонимы

Смотрите также
Комментарии
Написать

(обязательно)

(обязательно)

Это не спам (обязательно)