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

Что происходит, если операция внутри транзакции завершается с ошибкой

При ошибке внутри транзакции происходит откат (rollback) всех изменений, сделанных в рамках этой транзакции, до состояния на момент начала транзакции. Это обеспечивает атомарность - либо выполняются все операции транзакции, либо ни одна.

Пример с SQLite:

python
import sqlite3

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

try:
conn.execute("BEGIN TRANSACTION")
cursor.execute("INSERT INTO test VALUES (1, 'success')")
cursor.execute("INSERT INTO test VALUES (1, 'duplicate')") # Ошибка дубликата PK
conn.commit()
except sqlite3.IntegrityError:
conn.rollback()
print("Transaction rolled back")

Проверяем, что таблица пуста

print(cursor.execute("SELECT * FROM test").fetchall()) # []

text

Даже если первая вставка прошла успешно, из-за ошибки во второй операции вся транзакция откатится.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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