Конструкция select for update
Ни для кого не секрет, что в различных СУБД блокирование реализовано по разному. Есть несколько основных принципов блокирования в СУБД Oracle, незнание которых может привести к возникновению ошибок в приложениях.
- Oracle блокирует данные на уровне строк и только при изменении. Эскалация блокировок до уровня блока или таблицы никогда не выполняется.
- Oracle никогда не блокирует данные с целью считывания. При обычном считывание блокировки на строки не устанавливаются.
- Сеанс, записывающий данные не блокирует сеанс, читающий данные.
- Сеанс записи данных блокируется, только если сеанс записи уже заблокировал строку, которую предполагается изменять. Сеанс считывания данных никогда не блокирует сеанс записи.