MariaDB - Транзакции
Транзакции - это последовательные групповые операции. Они функционируют как единое целое и не завершаются, пока все операции в группе не будут выполнены успешно. Единичный сбой в группе приводит к сбою всей транзакции и не влияет на базу данных.
Транзакции соответствуют ACID (атомарность, согласованность, изоляция и долговечность) -
Atomicity - Обеспечивает успешное выполнение всех операций за счет прерывания при сбоях и отката изменений.
Consistency - Это гарантирует, что база данных применяет изменения при успешной транзакции.
Isolation - Позволяет проводить независимые транзакции, операции транзакций.
Durability - Обеспечивает сохранение успешной транзакции в случае сбоя системы.
В начале оператора транзакции находится оператор START TRANSACTION, за которым следуют операторы COMMIT и ROLLBACK -
START TRANSACTION начинает транзакцию.
COMMIT сохраняет изменения в данных.
ROLLBACK завершает транзакцию, уничтожая любые изменения.
При успешной транзакции действует COMMIT. В случае сбоя действует ROLLBACK.
Note- Некоторые операторы вызывают неявную фиксацию, а также вызывают ошибку при использовании в транзакциях. Примеры таких операторов включают, но не ограничиваются ими, CREATE, ALTER и DROP.
Транзакции MariaDB также включают такие параметры, как SAVEPOINT и LOCK TABLES. SAVEPOINT устанавливает точку восстановления для использования с ROLLBACK. LOCK TABLES позволяет контролировать доступ к таблицам во время сеансов, чтобы предотвратить изменения в определенные периоды времени.
Переменная AUTOCOMMIT обеспечивает контроль над транзакциями. Значение 1 заставляет все операции считаться успешными транзакциями, а значение 0 вызывает сохранение изменений только в явном операторе COMMIT.
Структура транзакции
Общая структура отчета о транзакции начинается с START TRANSACTION. Следующим шагом является вставка одной или нескольких команд / операций, вставка операторов, которые проверяют наличие ошибок, вставка операторов ROLLBACK для управления любыми обнаруженными ошибками и, наконец, вставка оператора COMMIT для применения изменений при успешных операциях.
Просмотрите пример, приведенный ниже -
START TRANSACTION;
SELECT name FROM products WHERE manufacturer = 'XYZ Corp';
UPDATE spring_products SET item = name;
COMMIT;