PostgreSQL: автономные транзакцииДостаточно часто на практике в рамках одной транзакции нужно иметь возможность начать другую транзакцию, результат выполнения которой не будет зависеть от успешности выполнения родительской. Такая возможность может быть очень полезна, когда нужно организовать аудит (логирование) выполнения некоторых действий вне зависимости от результата их выполнения. Транзакции ведущие себя описанным выше образом называются автономными. В стандартной версии PostgreSQL 9.6 такой возможности нет, но она появилась в Postgres Pro Enterprise 9.6 . Это новшество приближает Postgres Pro к "крупным" СУБД таким как Oracle. Для реализации автономных транзакций претерпели изменения операторы BEGIN/END, которые были расширены необязательным ключевым словом AUTONOMOUS:
Указывать ключевое слово AUTONOMOUS в предложении END TRANSACTION не обязательно. С автономными транзакциями возможно организовать несколько уровней вложенности, но транзакция верхнего уровня автономной быть не может. Для работы с автономными транзакциями был также расширен PL/pgSQL, ключевым словом autonomous, которое используется совместно с begin.
Более того в случае автономных транзакций можно улучшить механизм NOTIFY/LISTEN, в котором нотификация из транзакции будет отправлена только в случае ее успешного завершения. Переход на использование автономных транзакций позволяет избежать отката NOTIFY. Важно понимать, что если в автономной транзакции возникнет исключение, то оно будет обработано, также как для вложенной транзакции.
28.03.2017 |
популярные тэги
наука
интересно
новости
технологии
история
go
golang
программирование
it
искусственный интеллект
путешествия
природа
космос
ai
базы данных
медицина
science
анализ текстов
ии
text mining
робототехника
авто
музыка
роботы
интернет
нейронные сети
robots
space
вокруг света
postgresql
алгоритмы
гитара
животные
оружие
google
nosql
авиация
здоровье
техника
auto
|