Проверяет понимание механизма точек сохранения в транзакциях для управления частичным откатом изменений.
SAVEPOINT — это механизм в системах управления базами данных, который позволяет создавать промежуточные точки сохранения внутри транзакции. Он дает возможность выполнить частичный откат изменений, не прерывая всю транзакцию. Это особенно полезно в длинных или сложных транзакциях, где ошибка в одном шаге не должна отменять все предыдущие успешные операции.
После установки SAVEPOINT вы можете выполнять операции, а затем при необходимости откатиться к этой точке с помощью команды ROLLBACK TO SAVEPOINT. Все изменения, сделанные после точки сохранения, будут отменены, но изменения до нее останутся. После отката точка сохранения сохраняется, и вы можете продолжить работу.
BEGIN;
INSERT INTO accounts VALUES (1, 'Alice', 1000);
SAVEPOINT sp1;
UPDATE accounts SET balance = balance - 200 WHERE id = 1;
-- Ошибка: недостаточно средств
ROLLBACK TO SAVEPOINT sp1;
-- Баланс Alice снова 1000
INSERT INTO accounts VALUES (2, 'Bob', 500);
COMMIT;SAVEPOINT — мощный инструмент для управления транзакциями, позволяющий гибко обрабатывать ошибки без полного отката. Его стоит применять в сценариях, где требуется атомарность на уровне подзадач, например, при пакетной обработке данных или в финансовых операциях.