Транзакции — это последовательные групповые операции. Они функционируют как единое целое и не завершаются до тех пор, пока все операции в группе не будут успешно выполнены. Один сбой в группе приводит к сбою всей транзакции и не влияет на базу данных.
Транзакции соответствуют ACID (атомарность, согласованность, изоляция и долговечность) —
-
Атомарность — обеспечивает успех всех операций, прерывая сбои и откатывая изменения.
-
Согласованность — гарантирует, что база данных применяет изменения к успешной транзакции.
-
Изоляция — это позволяет независимой транзакции операции транзакций.
-
Долговечность — обеспечивает постоянство успешной транзакции в случае сбоя системы.
Атомарность — обеспечивает успех всех операций, прерывая сбои и откатывая изменения.
Согласованность — гарантирует, что база данных применяет изменения к успешной транзакции.
Изоляция — это позволяет независимой транзакции операции транзакций.
Долговечность — обеспечивает постоянство успешной транзакции в случае сбоя системы.
Во главе оператора транзакции находится оператор START TRANSACTION, за которым следуют операторы COMMIT и ROLLBACK —
-
START TRANSACTION начинает транзакцию.
-
COMMIT сохраняет изменения в данных.
-
ROLLBACK завершает транзакцию, уничтожая любые изменения.
START TRANSACTION начинает транзакцию.
COMMIT сохраняет изменения в данных.
ROLLBACK завершает транзакцию, уничтожая любые изменения.
В случае успешной транзакции действует COMMIT. В случае сбоя действует ROLLBACK.
Примечание. Некоторые операторы вызывают неявную фиксацию, а также вызывают ошибку при использовании внутри транзакций. Примеры таких утверждений включают, но не ограничиваются CREATE, ALTER и DROP.
Транзакции MariaDB также включают такие опции, как SAVEPOINT и LOCK TABLES. SAVEPOINT устанавливает точку восстановления для использования с ROLLBACK. LOCK TABLES позволяет контролировать доступ к таблицам во время сеансов, чтобы предотвратить изменения в определенные периоды времени.
Переменная AUTOCOMMIT обеспечивает контроль над транзакциями. Установка 1 заставляет все операции считаться успешными транзакциями, а установка 0 заставляет сохранение изменений происходить только в явном операторе COMMIT.
Структура транзакции
Общая структура оператора транзакции начинается с START TRANSACTION. Следующим шагом является вставка одной или нескольких команд / операций, вставка операторов, проверяющих наличие ошибок, вставка операторов ROLLBACK для управления обнаруженными ошибками и, наконец, вставка оператора COMMIT для применения изменений к успешным операциям.
Просмотрите пример, приведенный ниже —