Встречается на собеседованиях • сегодня
Что такое вложенная транзакция
Вложенные транзакции (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()
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы