Что такое Транзакция · PHP Backend — JobPilot

Что такое Транзакция

PHP Backend · 40%
Вопрос 7 / #
Пример ответа

1) Короткий ответ
Транзакция — это последовательность операций с базой данных, которая выполняется как единое целое: либо все операции успешно применяются, либо ни одна из них.

3) Ключевые идеи (ACID)

  1. Atomicity (Атомарность) — Все операции в транзакции выполняются вместе или откатываются полностью при ошибке.

  2. Consistency (Согласованность) — Транзакция переводит базу из одного валидного состояния в другое, сохраняя целостность данных.

  3. Isolation (Изолированность) — Параллельные транзакции не влияют друг на друга.

  4. Durability (Долговечность) — После подтверждения (commit) изменения сохраняются даже при сбое системы.

5) Пример кода (Laravel)

php

Copy

Download

DB::transaction(function () {
    $user = User::create(['email' => 'john@example.com']);
    
    // Если это удаление не выполнится, то и создание пользователя откатится
    User::where('invalid', true)->delete(); 
});

// Или ручное управление
DB::beginTransaction();
try {
    $order = Order::create(['total' => 100]);
    $order->items()->create(['product_id' => 1]);
    DB::commit(); // Подтверждаем изменения
} catch (Exception $e) {
    DB::rollBack(); // Откатываем всё при ошибке
    throw $e;
}

6) Follow-up вопросы

  • Какие уровни изоляции вы знаете?Read committed, Repeatable read.

  • Когда транзакция не нужна?Одиночные SELECT-запросы.

7) Практический совет

  1. В своем проекте найдите операцию, которая изменяет несколько связанных таблиц (например, создание заказа), и оберните её в транзакцию.

  2. Протестируйте откат транзакции: добавьте искусственную ошибку (например, throw new Exception) после нескольких изменений и убедитесь, что данные не сохранились.

PHP Backend
Junior
40%
Навигация
Что такое SOLID
Следующий: Какие знаешь типы данных в PHP
Предыдущий: Что такое SOLID

Мы используем cookie для улучшения сайта. Продолжая пользоваться сайтом, вы соглашаетесь с политикой cookie и политикой конфиденциальности.