Предложение FOR UPDATE: Примеры

  • Можно использовать предложение FOR UPDATE в операторе SELECT для нескольких таблиц.

Предложение FOR UPDATE: Примеры
  • Строки из обоих таблиц EMPLOYEES и DEPARTMENTS блокируются.

  • Используйте FOR UPDATE OF column_name, чтобы квалифицировать столбец, который Вы намереваетесь изменить, тогда только строки из этой определенной таблицы блокируются.

В примере на рисунке оператор FOR UPDATE блокирует строки таблицы EMPLOYEES с JOB_ID установленным в ST_CLERK и LOCATION_ID установленным в 1500, и блокирует строки таблицы DEPARTMENTS с отделами, у которых LOCATION_ID установлен в 1500.

Можно использовать FOR UPDATE OF column_name, чтобы квалифицировать столбец, который Вы намереваетесь изменить.

Список OF предложения FOR UPDATE не ограничивает Вас изменением только столбцов выбранных строк. Блокировки все еще устанавливаются на все строки; если Вы просто указываете FOR UPDATE в запросе и не включаете один или более столбцов после ключевого слова OF, база данных заблокирует все идентифицированные строки для всех таблиц, перечисленных в предложении FROM.

Следующий оператор блокирует только те строки в таблице EMPLOYEES с ST_CLERK, которые расположены в LOCATION_ID 1500. Никакие строки не блокируются таблице DEPARTMENTS:

    SELECT e.employee_id, e.salary, e.commission_pct
FROM employees e JOIN departments d
USING (department_id)
WHERE job_id = 'ST_CLERK' AND location_id = 1500
FOR UPDATE OF e.salary
ORDER BY e.employee_id;

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

    SELECT employee_id, salary, commission_pct, job_id
FROM employees
WHERE job_id = 'SA_REP'
FOR UPDATE WAIT 5
ORDER BY employee_id;

Далее: Создание и Удаление Синонимов

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

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

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

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