Вложенная транзакция
Транзакция внутри транзакции: в стандарте 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.