Oracle оператор слияния и мультисессия - PullRequest
0 голосов
/ 10 февраля 2020

Я пытаюсь спланировать многопоточное приложение, но не уверен насчет 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

...