Встречается на собеседованиях • сегодня

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

Вложенные транзакции (nested transactions) — это транзакции, созданные внутри другой транзакции. Они позволяют организовать иерархию операций с возможностью частичного отката.

Основные особенности:

  • Вложенные транзакции не являются независимыми — их фиксация зависит от родительской транзакции.
  • Откат вложенной транзакции не приводит к откату всей родительской транзакции.
  • В Python стандартные БД (SQLite, PostgreSQL) не поддерживают вложенные транзакции нативно, но можно эмулировать через savepoints.

Пример с savepoint в SQLite:

python
import sqlite3

conn = sqlite3.connect(':memory:')
cursor = conn.cursor()
cursor.execute("CREATE TABLE test (id INTEGER, name TEXT)")

try:
    cursor.execute("INSERT INTO test VALUES (1, 'Alice')")
    savepoint = conn.savepoint()  # Эмуляция вложенной транзакции
    try:
        cursor.execute("INSERT INTO test VALUES (2, 'Bob')")
        raise Exception("Ошибка во вложенной операции")
    except:
        conn.rollback_to(savepoint)  # Откат только вложенной части
    conn.commit()  # Фиксируется только первая запись (Alice)
except:
    conn.rollback()
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы