Создаем динамические веб-сайты с помощью PHP, MySQL и JavaScript |
Страница 219 из 478 Пример 9.3. Транзакция MySQL BEGIN; UPDATE accounts SET balance=balance+25.11 WHERE number=12345; COMMIT; Результаты этой транзакции выводятся командой, содержащейся в последней строке, и должны иметь следующий вид:------+---------+ | 67890 | 140 | +--------+---------+ Как видите, баланс счета 12345 увеличился на 25,11 и теперь составляет 1050,61. В примере 9.3 можно было также заметить команду 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 | |