Sobes.tech
Junior — Middle
77

Czy możesz podać przykład sytuacji, w której używa się transakcji w bazie danych lub systemie przetwarzania danych?

Odpowiedź od AI

sobes.tech AI

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

Пример ситуации:

В банковском приложении при переводе денег с одного счёта на другой нужно выполнить две операции:

  1. Списать сумму с одного счёта.
  2. Зачислить сумму на другой счёт.

Если одна из операций не выполнится (например, сбой после списания, но до зачисления), данные окажутся в неконсистентном состоянии.

Использование транзакции гарантирует, что обе операции либо выполнятся полностью, либо не будут выполнены вовсе (откат).

В 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:
    conn.rollback()
    raise
finally:
    conn.close()

Таким образом, транзакции обеспечивают атомарность, согласованность, изолированность и долговечность (ACID) операций с данными.