Sobes.tech
Back to questions
Junior — Middle
56

Можешь привести пример ситуации, в которой используется транзакция для обеспечения целостности данных?

Answer from AI

sobes.tech AI

Транзакции используются для обеспечения целостности данных, когда нужно выполнить несколько связанных операций, которые должны быть атомарными — то есть либо все операции выполняются успешно, либо ни одна не применяется.

Пример: при переводе денег между двумя счетами в базе данных. Нужно списать сумму с одного счета и добавить на другой. Если одна операция пройдет, а другая нет, данные будут неконсистентными.

В Python с использованием библиотеки sqlite3 транзакция может выглядеть так:

import sqlite3

conn = sqlite3.connect('bank.db')
cursor = conn.cursor()

try:
    conn.execute('BEGIN')
    cursor.execute('UPDATE accounts SET balance = balance - 100 WHERE id = 1')
    cursor.execute('UPDATE accounts SET balance = balance + 100 WHERE id = 2')
    conn.commit()  # подтверждаем транзакцию
except Exception as e:
    conn.rollback()  # откатываем изменения при ошибке
    print('Ошибка при переводе:', e)
finally:
    conn.close()

Таким образом, если одна из операций обновления баланса не выполнится, изменения не сохранятся, и данные останутся целостными.