MySQL — Транзакции

Транзакция — это последовательная группа операций манипулирования базой данных, которая выполняется, как если бы это была одна единичная работа. Другими словами, транзакция никогда не будет завершена, если каждая отдельная операция в группе не будет успешной. Если какая-либо операция внутри транзакции завершится неудачно, вся транзакция завершится ошибкой.

На практике вы объедините множество SQL-запросов в группу и будете выполнять их все вместе как часть транзакции.

Свойства транзакций

Транзакции имеют следующие четыре стандартных свойства, обычно обозначаемых аббревиатурой ACID

  • Атомарность — это гарантирует, что все операции в рамках единицы работы завершены успешно; в противном случае транзакция прерывается в момент сбоя, а предыдущие операции возвращаются в исходное состояние.

  • Согласованность — это гарантирует, что база данных правильно меняет состояние после успешно зафиксированной транзакции.

  • Изоляция — это позволяет транзакциям работать независимо и прозрачно друг для друга.

  • Долговечность — это гарантирует, что результат или эффект зафиксированной транзакции сохранится в случае сбоя системы.

В MySQL транзакции начинаются с оператора BEGIN WORK и заканчиваются оператором COMMIT или ROLLBACK . Команды SQL между начальным и конечным операторами составляют основную часть транзакции.

COMMIT и ROLLBACK

Эти два ключевых слова Commit и Rollback в основном используются для транзакций MySQL.

  • Когда успешная транзакция завершается, следует подать команду COMMIT, чтобы изменения во всех задействованных таблицах вступили в силу.

  • Если происходит сбой, необходимо подать команду ROLLBACK, чтобы вернуть каждую таблицу, на которую есть ссылка в транзакции, в ее предыдущее состояние.

Вы можете управлять поведением транзакции, установив переменную сеанса AUTOCOMMIT . Если для AUTOCOMMIT установлено значение 1 (по умолчанию), то каждый оператор SQL (в рамках транзакции или нет) считается завершенной транзакцией и фиксируется по умолчанию при ее завершении.

Когда AUTOCOMMIT установлен в 0, при вводе команды SET AUTOCOMMIT = 0 последующая серия операторов действует как транзакция, и никакие действия не фиксируются, пока не будет выдан явный оператор COMMIT.

Вы можете выполнять эти команды SQL в PHP с помощью функции mysql_query () .

Общий пример транзакции

Эта последовательность событий не зависит от используемого языка программирования. Логический путь может быть создан на любом языке, который вы используете для создания своего приложения.

Вы можете выполнять эти команды SQL в PHP с помощью функции mysql_query () .

  • Начните транзакцию, введя SQL-команду BEGIN WORK .

  • Выполните одну или несколько команд SQL, например SELECT, INSERT, UPDATE или DELETE.

  • Проверьте, нет ли ошибок и все ли соответствует вашим требованиям.

  • В случае ошибки выполните команду ROLLBACK, в противном случае — команду COMMIT.

Безопасные для транзакций типы таблиц в MySQL

Вы не можете использовать транзакции напрямую, но в некоторых случаях можете. Однако они небезопасны и не гарантируются. Если вы планируете использовать транзакции в программировании MySQL, вам необходимо создавать свои таблицы особым образом. Есть много типов таблиц, поддерживающих транзакции, но самый популярный из них — InnoDB .

Поддержка таблиц InnoDB требует определенного параметра компиляции при компиляции MySQL из источника. Если ваша версия MySQL не поддерживает InnoDB, попросите своего интернет-провайдера создать версию MySQL с поддержкой типов таблиц InnoDB или загрузите и установите двоичный дистрибутив MySQL-Max для Windows или Linux / UNIX и работайте с типом таблицы в среда разработки.

Если ваша установка MySQL поддерживает таблицы InnoDB, просто добавьте определение TYPE = InnoDB в оператор создания таблицы.

Например, следующий код создает таблицу InnoDB с именем tcount_tbl

root@host# mysql -u root -p password;
Enter password:*******

mysql> use TUTORIALS;
Database changed

mysql> create table tcount_tbl
   -> (
   -> tutorial_author varchar(40) NOT NULL,
   -> tutorial_count  INT
   -> ) TYPE = InnoDB;
Query OK, 0 rows affected (0.05 sec)

Для получения дополнительных сведений о InnoDB вы можете щелкнуть следующую ссылку — InnoDB

Вы можете использовать другие типы таблиц, такие как GEMINI или BDB , но это зависит от вашей установки, поддерживает ли она эти два типа таблиц или нет.

Выберите поля, которые будут показаны. Прочие будут скрыты. Перктаскивайте мышкой для изменения порядка полей.
  • Изображение
  • SKU
  • Рейтинг
  • Цена
  • Запасы
  • Доступность
  • В корзину
  • Описание
  • Содержимое
  • Вес
  • Размеры
  • Дополнительная информация
  • Атрибуты
  • Custom attributes
  • Настраиваемые поля
Сравнить
Список желаний 0
Открыть страницу желаний Продолжить покупки