Verschachtelte Transaktion
Transaktion innerhalb einer Transaktion. In SQL standardisiert, aber in RDBMS nur spärlich unterstützt. PostgreSQL/MySQL emulieren über Savepoints. BEGIN innerhalb von BEGIN ist meist No-op oder Fehler.
PostgreSQL: BEGIN; ... BEGIN; ... liefert die Warnung "there is already a transaction in progress" — das innere BEGIN wird ignoriert. SQL Server unterstützt verschachtelte Transaktionen, aber die Commit-Semantik ist verwirrend (der innere Commit bewirkt nichts, nur der äußere Commit wird tatsächlich angewendet). Echte verschachtelte Transaktionssemantik: Ein innerer Abbruch macht nur den inneren Zustand rückgängig. In PostgreSQL über PL/pgSQL sind BEGIN-EXCEPTION-Blöcke effektiv verschachtelte Transaktionen über Savepoints. ORM-Frameworks abstrahieren das: Djangos atomic() lässt sich verschachteln und nutzt intern Savepoints.