НОВИНКА!
Занимательная математика от Трепачёва. Присоединяйтесь к нам!
143 of 150 menu

Команда SAVEPOINT

Команда SAVEPOINT используется внутри транзакции для создания промежуточной точки сохранения. Это позволяет откатить только часть изменений, выполненных после указанной точки, не отменяя всю транзакцию целиком.

Промежуточные точки автоматически удаляются после выполнения COMMIT или полного ROLLBACK.

Синтаксис

SAVEPOINT savepoint_name

Таблицы для примеров

accounts
id name balance
1 Ivan 1000
2 Olga 1500

Пример

Давайте начнём транзакцию, выполним изменение баланса и создадим точку сохранения:

START TRANSACTION; UPDATE accounts SET balance = balance - 200 WHERE id = 1; SAVEPOINT sp_after_first_update;

Давайте выполним дополнительные изменения и откатимся только к точке сохранения:

UPDATE accounts SET balance = balance - 300 WHERE id = 1; ROLLBACK TO SAVEPOINT sp_after_first_update; COMMIT;

Результат выполнения кода:

id name balance
1 Ivan 800
2 Olga 1500

Пример

Давайте начнём транзакцию, создадим несколько точек сохранения и откатимся к одной из них:

START TRANSACTION; UPDATE accounts SET balance = balance - 100 WHERE id = 1; SAVEPOINT sp_step_1; UPDATE accounts SET balance = balance - 200 WHERE id = 1; SAVEPOINT sp_step_2; UPDATE accounts SET balance = balance - 300 WHERE id = 1; ROLLBACK TO SAVEPOINT sp_step_2; COMMIT;

Результат выполнения кода:

id name balance
1 Ivan 700
2 Olga 1500

Смотрите также

  • команду ROLLBACK,
    которая отменяет изменения
  • команду START TRANSACTION,
    которая начинает транзакцию
  • команду COMMIT,
    которая завершает транзакцию
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить