Я выбираю из таблиц FOO и BAR. Я хотел бы заблокировать записи НЕЧТО, которые возвращаются, но я не хочу, чтобы записи ПАНЕЛИ были заблокированы.
cursor c_foobar is
select foo.*, bar.* from
foo, bar
where foo.id = bar.foo_id
for update of <what should I put here?>
Кажется, что я должен указать отдельные столбцы, но я хочу, чтобы вся запись нечто была заблокирована. например, Мне бы хотелось сделать что-то как:
cursor c_foobar is
select foo.*, bar.* from
foo, bar
where foo.id = bar.foo_id
for update of foo
Сделайте я должен перечислить каждый столбец нечто в for update of
разделите для блокировки их всех? Или я могу произвольно выбрать какой-либо столбец в нечто, даже те, которые не являются его первичным ключом, и это заблокирует всю запись?
При запросе нескольких таблиц вы можете использовать предложение FOR UPDATE, чтобы ограничить блокировку строк для определенных таблиц. Строки в таблице блокируются только в том случае, если предложение FOR UPDATE OF ссылается на столбец в этой таблице. Например. следующий запрос блокирует строки в таблице employees, но не в departments table:
DECLARE
CURSOR c1 IS SELECT last_name, department_name FROM employees, departments
WHERE employees.department_id = departments.department_id
AND job_id = 'SA_MAN'
FOR UPDATE OF salary;