IT-словарь › Базы данных › Вложенная транзакция

Вложенная транзакция

Базы данных Svenska → Обновлено: 2026-10-18

Транзакция внутри транзакции: в стандарте SQL описана, но СУБД поддерживают её редко.

PostgreSQL и MySQL эмулируют вложенность через savepoint, а BEGIN внутри BEGIN обычно ничего не делает или даёт ошибку. В PostgreSQL второй BEGIN выдаёт предупреждение «there is already a transaction in progress» и игнорируется. SQL Server вложенные транзакции поддерживает, но семантика commit запутанна: внутренний commit ничего не делает, действует только внешний.

В настоящей вложенной транзакции откат внутренней отменяет только её состояние. В PL/pgSQL блоки BEGIN-EXCEPTION по сути вложенные транзакции на savepoint. ORM скрывают это: atomic() в Django можно вкладывать, внутри используются savepoint.

← Назад к словарю