> Что такое транзакции в базах данных и для чего они нужны (PHP)

Уровень: junior · Роль: backend · Язык: PHP · Категория: Технические вопросы

Компании: vanta

Стек: PHP

> Пример ответа

Транзакция - это логическая единица работы, состоящая из одной или нескольких операций над данными (INSERT, UPDATE, DELETE), которая выполняется как атомарное действие. В PHP (например, с PDO или Doctrine) транзакции реализуются через методы beginTransaction(), commit() и rollback().

Основные свойства транзакции описываются аббревиатурой ACID:

  • Атомарность - все операции транзакции либо выполняются полностью, либо не выполняются вовсе. Если на каком-то этапе происходит ошибка, изменения откатываются.
  • Согласованность - данные после транзакции остаются в целостном состоянии (например, баланс счета не может стать отрицательным).
  • Изолированность - параллельные транзакции не мешают друг другу (уровни изоляции настраиваются, например, READ COMMITTED).
  • Долговечность - после фиксации (commit) изменения сохраняются даже при сбое системы.

Зачем нужны транзакции в PHP?

  1. Гарантия целостности данных - например, при переводе денег: списание с одного счета и зачисление на другой должны произойти вместе. Если не использовать транзакцию, при сбое после списания деньги пропадут.
  2. Обработка ошибок - можно откатить все изменения при исключении.
  3. Параллельный доступ - транзакции предотвращают чтение "грязных" данных от других запросов.

Пример с PDO:

PHP
$pdo->beginTransaction();
try {
$pdo->exec("UPDATE accounts SET balance = balance - 100 WHERE id = 1");
$pdo->exec("UPDATE accounts SET balance = balance + 100 WHERE id = 2");
$pdo->commit();
} catch (Exception $e) {
$pdo->rollBack();
throw $e;
}

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью