SQL> savepoint a;保存点已创建。SQL> rollback to savepoint a;重算已完成。
see PL/SQL User’s Guide and Reference: DECLARE emp_id emp.empno%TYPE; BEGIN Overview of Transaction Processing in PL/SQL UPDATE emp SET ... WHERE empno = emp_id; DELETE FROM emp WHERE ... ... SAVEPOINT do_insert; INSERT INTO emp VALUES (emp_id, ...); EXCEPTION WHEN DUP_VAL_ON_INDEX THEN ROLLBACK TO do_insert; END;
DECLARE
emp_id emp.empno%TYPE;
BEGIN
Overview of Transaction Processing in PL/SQL
UPDATE emp SET ... WHERE empno = emp_id;
DELETE FROM emp WHERE ...
...
SAVEPOINT do_insert;
INSERT INTO emp VALUES (emp_id, ...);
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
ROLLBACK TO do_insert;
END;