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()
Таким образом, если одна из операций обновления баланса не выполнится, изменения не сохранятся, и данные останутся целостными.