Создаем динамические веб-сайты с помощью PHP, MySQL и JavaScript

Печать

Пример 9.3. Транзакция MySQL BEGIN;

UPDATE accounts SET balance=balance+25.11 WHERE number=12345; COMMIT;

SELECT * FROM accounts;

Результаты этой транзакции выводятся командой, содержащейся в последней

строке, и должны иметь следующий вид:------+---------+

| number | balance |

| 12345 | 1050.61 |

| 67890 | 140 | +--------+---------+

2 rows in set (0.00 sec)

Как видите, баланс счета 12345 увеличился на 25,11 и теперь составляет 1050,61. В примере 9.3 можно было также заметить команду COMMIT, которая рассматривается в следующем разделе.

Использование команды COMMIT

Когда вы убедитесь в том, что ряд запросов, входящих в транзакцию, успешно выполнен, введите команду COMMIT, для того чтобы передать все изменения базе данных. До тех пор, пока не будет получена команда COMMIT, все внесенные изменения рассматриваются MySQL как временные. Эта особенность позволяет отменить транзакцию, отправляя вместо команды передачи COMMIT команду отката ROLLBACK.

Использование команды ROLLBACK

Используя команду ROLLBACK, можно заставить MySQL забыть обо всех запросах, выданных с начала до конца транзакции. Можете проверить эту команду в действии путем ввода транзакции по переводу средств, показанной в примере 9.4.

Пример 9.4. Транзакция по переводу средств BEGIN;

UPDATE accounts SET balance-balance-250 WHERE number=12345;

UPDATE accounts SET balance=balance+250 WHERE number=67890; SELECT * FROM accounts;

Как только будут введены эти строки, вы увидите следующий результат:+......--+---------+

| number | balance | +--------+---------+

| 12345 | 800.61 | | 67890 | 390 |

+--------+---------4

2 rows in set (0.00 sec)