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

Python Middle Без компании
Что происходит, если операция внутри транзакции завершается с ошибкой
Ответы
При ошибке внутри транзакции происходит откат (rollback) всех изменений, сделанных в рамках этой транзакции, до состояния на момент начала транзакции. Это обеспечивает атомарность - либо выполняются все операции транзакции, либо ни одна. Пример с SQLite: ``` 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()) # [] ``` Даже если первая вставка прошла успешно, из-за ошибки во второй операции вся транзакция откатится.