当一个事务包含多个操作时,SAVEPOINT
允许在事务执行过程中标记特定的点。如果在事务的后续部分发生错误,您可以选择回滚到某个保存点,而不是回滚整个事务。这有助于在复杂的事务处理中,只撤销部分操作,保留之前成功执行的部分。
sql
BEGIN
INSERT INTO table1 (col1, col2) VALUES ('value1', 'value2');
SAVEPOINT sp1;
UPDATE table2 SET col3 = 'new_value' WHERE condition;
SAVEPOINT sp2;
-- 如果在后续操作中需要回滚到某个保存点,可以使用ROLLBACK TO SAVEPOINT
-- 例如,如果更新操作出现问题,可以回滚到sp1
-- ROLLBACK TO SAVEPOINT sp1;
END;