Я собираюсь сделать некоторые sql здесь. Я хочу что-то вроде следующего:
select ... for update priority 2; // Session 2
Итак, когда я запускаю в другой сессии
select ... for update priority 1; // Session 1
Он немедленно возвращается и выдает ошибку в сеансе 2 (и, следовательно, выполняет откат) и блокирует строку в сеансе 1.
Затем, пока сеанс 1 удерживает блокировку, в сеансе 2 выполняется следующее.
select ... for update priority 2; // Session 2
Дождется, пока сессия 1 снимет блокировку.
Как я мог реализовать такую схему, поскольку priority x
- это просто то, что я придумал. Мне нужно только то, что может сделать два уровня приоритета.
Кроме того, я рад скрыть всю свою логику в процедурах PL / SQL, мне не нужно это для работы с общими операторами SQL.
Я использую Oracle 10g, если это что-то меняет.