Я пытаюсь спланировать многопоточное приложение, но не уверен насчет Oracle MERGE с несколькими сессиями.
Что происходит, когда текущий сеанс находится в строке 10
Но другой сеанс уже прошел строку 10 перед фиксацией?
Что происходит, когда текущий сеанс находится в строке 10
Но другой сеанс уже прошел строку 10 и уже сделал коммит?
что произойдет, если текущий сеанс находится в строке 07 или 08, но запись была удалена другим сеансом?
01 MERGE INTO bonuses b
02 USING (
03 SELECT employee_id, salary, dept_no FROM employee WHERE dept_no =20) e
04 ON (b.employee_id = e.employee_id)
05
06 WHEN MATCHED THEN
07 UPDATE SET b.bonus = e.salary * 0.1
08 DELETE WHERE (e.salary < 40000)
09
10 WHEN NOT MATCHED THEN
11 INSERT (b.employee_id, b.bonus)
12 VALUES (e.employee_id, e.salary * 0.05)
13 WHERE (e.salary > 40000);
Это просто пример с сайта psoug.org