Полезная статья? Пожалуйста, поставьте "+"
Базы данных - Содержание
Оператор COMMIT( с его помощью фиксируем транзакцию) применяется для того, чтобы:
- сделать «постоянными» все изменения, сделанные в текущей транзакции (реально данные могут быть изменены несколько позже)
- очистить все точки сохранения данной транзакции
- завершить транзакцию
- освободить все блокировки данной транзакции
Пример Для добавления строки к таблице MyTable и сохранения изменения введите следующие команды:
BEGIN TRANSACTION;
INSERT INTO MyTable VALUES ('50', 'some string');
COMMIT WORK;
ROLLBACK (откат) — оператор языка SQL, который применяется для того, чтобы:
- отменить все изменения, внесённые начиная с момента начала транзакции или с какой-то точки сохранения (SAVEPOINT).
- очистить все точки сохранения данной транзакции
- завершить транзакцию
- освободить все блокировки данной транзакции
Замечания по использованию!
Рекомендуется явно завершать транзакции в прикладных программах
используя команды COMMIT WORK (или ROLLBACK WORK). Если Вы явно не
записали транзакцию, а прикладная программа завершилась аварийно,
последняя не записанная транзакция будет откачена.
Пример Для добавления записи к таблице MyTable и последующей отмены этого действия, введите следующие команды:
BEGIN TRANSACTION;
INSERT INTO MyTable VALUES ('50', 'some string');
ROLLBACK WORK;
Транзакция (англ.
transaction) — в информатике, группа последовательных операций, которая
представляет собой логическую единицу работы с данными. Транзакция может
быть выполнена либо целиком и успешно, соблюдая целостность данных и
независимо от параллельно идущих других транзакций, либо не выполнена
вообще и тогда она не должна произвести никакого эффекта. Транзакции
обрабатываются транзакционными системами, в процессе работы которых
создаётся история транзакций. Различают последовательные (обычные),
параллельные и распределённые транзакции. Распределённые транзакции
подразумевают использование больше чем одной транзакционной системы и
требуют намного более сложной логики (например, two-phase commit —
двухфазный протокол фиксации транзакции). Также, в некоторых системах
реализованы автономные транзакции, или под-транзакции, которые являются
автономной частью родительской транзакции.
После ROLLBACK, база данных
восстанавливается - отменяются удаления, добавления и изменения в
данных, как будто-бы с ней ничего и не делали. В противоположность этой
команде, команда COMMIT окончательно подтверждает сохранение изменений.
MySQL должен знать, когда транзакция
началась, и когда она заканчивается явно. При возникновении ошибок Вы не
обязательно должны сразу же откатывать транзакцию. В разных ситуациях
могут быть разные решения. Даже в рамках одной транзакции Вы можете
предпочесть, например, откатиться на момент точки сохранения. Просто
завершить такую процедуру можно, но у Вас останется открытой транзакция,
то есть другие потоки не увидят эти изменения, другие возможные
транзакции в этом соединении, возможно, будут конфликтовать, и т.п.
|