Свойства транзакции
Сделки, часто называемые термином КИСЛОТА, иметь четыре основных свойства.
- Атомарность: Это гарантирует, что все задачи внутри единицы работы будут успешно выполнены; иначе, как раз в точке сбоя, процесс завершается, а предыдущие процессы восстанавливаются до своего старого состояния.
- Последовательность: Это означает, что после достаточно совершенного процесса база данных обновляет состояние соответствующим образом.
- Изоляция: Это помогает транзакциям работать друг с другом, индивидуально и прозрачно.
- Долговечность: Это гарантирует, что в случае сбоя системы результат или последствия зафиксированной транзакции сохранятся.
Работают транзакции MySQL:
В MySQL два термина, Commit и Rollback, в основном используются только для транзакций MySQL. Транзакции начинаются только с объявления BEGIN WORK и заканчиваются объявлением COMMIT или объявлением ROLLBACK. Инструкции SQL составляют большую часть транзакции среди операторов запуска и остановки. Такая серия событий не зависит от конкретного используемого языка программирования. Вы укажете подходящий путь на любом языке, который используете для создания приложения. Приведенные ниже операторы SQL могут быть реализованы с помощью функции mysql query ().
- НАЧИНАТЬ: Запустите свой процесс или транзакцию, предоставив инструкцию BEGIN WORK SQL.
- Добавить SQL-КОМАНДУ: один или даже несколько операторов SQL, таких как SELECT, INSERT, UPDATE и DELETE, соответственно. Подтвердите, даже если ошибки нет и все соответствует вашим ожиданиям.
- СОВЕРШИТЬ: Инструкция COMMIT должна быть наложена после успешной транзакции, чтобы изменения во всех связанных таблицах могли полностью вступить в силу.
- ОТКАТ: Если происходит сбой, действительно целесообразно отправить инструкцию ROLLBACK, чтобы вернуть каждую таблицу, указанную в транзакции, в ее прежнее состояние.
- АВТОКОММИТ: По умолчанию MySQL постоянно применяет изменения к базе данных. Если для AUTOCOMMIT установлено значение 1 (стандарт), то каждый SQL-запрос (независимо от того, внутри транзакции) считается завершенной транзакцией и фиксируется до тех пор, пока он не будет завершен по умолчанию. Чтобы избежать автоматической фиксации, установите AUTOCOMMIT на 0.
Пример 01: Режим AutoCommit включен:
MySQL работает с фазой Autocommit, разрешенной по умолчанию. Это гарантирует, что MySQL сохраняет изменения на диске, чтобы создавать его постоянно, пока мы выполняем запрос, который корректирует (изменяет) таблицу. Необязательно возвращать ход. Попробуем с AUTOCOMMIT в режиме. Откройте оболочку командной строки MySQL и введите свой пароль, чтобы начать.
Возьмем пример таблицы book, которая была создана в базе данных data. На данный момент мы еще не выполнили ни одного запроса по нему.
>> ВЫБРАТЬ * ИЗ данных.книга;
Шаг 2: Этот процесс предназначен для обновления таблицы "книга". Давайте обновим значение столбца "Автор", где в качестве названия книги указано "Дом". Вы можете видеть, что изменения были успешно внесены.
>> ОБНОВЛЕНИЕ данных.book SET Author = 'Cristian Steward' WHERE Name = 'Home';
Взглянув на обновленную таблицу, мы получаем измененное значение автора, где 'name' равно 'Home'.
>> ВЫБРАТЬ * ИЗ данных.книга;
Давайте воспользуемся командой ROLLBACK, чтобы отменить изменения, просто добавив следующий запрос. Вы можете видеть, что запрос ROLLBACK здесь не работает, поскольку он показывает, что «затронуто 0 строк».
>> ОТКАТ;
Вы даже можете увидеть таблицу. Таблица пока не претерпела изменений после выполнения оператора ROLLBACK. Это означает, что ROLLBACK не работает, если по умолчанию включен AUTOCOMMIT.
>> ВЫБРАТЬ * ИЗ данных.книга;
Пример 02: режим AutoCommit выключен:
Чтобы отменить внесенные изменения, давайте попробуем выключить режим AUTOCOMMIT. На том же примере таблицы book внесем в нее некоторые изменения. Мы будем использовать объявление START TRANSACTION, чтобы отключить его фазу автоматической фиксации, или просто введите команду ниже, чтобы отключить AUTOCOMMIT.
>> УСТАНОВИТЬ АВТОКОММИТ = 0;Скажем, у нас есть та же таблица 'book' в нашей базе данных, и мы должны внести в нее изменения. Затем снова верните эти изменения к старым.
>> ВЫБРАТЬ * ИЗ данных.книга;
Если вы не отключили режим AUTOCOMMIT, начните с запроса START TRANSACTION в оболочке командной строки, как показано ниже.
>> НАЧАТЬ СДЕЛКУ;
Мы будем обновлять ту же таблицу с помощью команды ОБНОВЛЕНИЕ, установив в поле «Автор» значение «Алиана», а «Имя» книги - «Мечта». Сделайте это с помощью следующей команды. Вы увидите, что изменения будут внесены успешно и эффективно.
>> ОБНОВЛЕНИЕ данных.book SET Autho = 'Aliana' ГДЕ Name = 'Мечта';
Давайте проверим, правильно ли работал вышеуказанный запрос и вносил ли изменения в таблицу или нет. Вы можете проверить обновленную таблицу, используя приведенную ниже команду SELECT, как всегда.
>> ВЫБРАТЬ * ИЗ данных.книга;Вы можете видеть, что запрос отлично сработал, как показано ниже.
Теперь настала очередь команды ROLLBACK выполнить свою функцию. Попробуйте выполнить команду ROLLBACK в командной строке, чтобы откатить последнее обновление таблицы.
>> ОТКАТ;
Проверим, отработал ли запрос ROLLBACK так, как должен работать или нет. Для этого вам нужно снова проверить таблицу 'book', как всегда, используя команду 'SELECT'.
>> ВЫБРАТЬ * ИЗ данных.книга;Из приведенного ниже вывода видно, что ROLLBACK наконец-то сработал. Он отменил изменения, внесенные запросом UPDATE в этой таблице.
Заключение:
Это все для транзакций MySQL. Надеюсь, это руководство поможет вам с удобством выполнять транзакции MySQL.