Introduction
Savepoints let you mark a spot in your work so you can go back to it if needed without undoing everything.
SAVEPOINT savepoint_name; -- do some work ROLLBACK TO savepoint_name; -- or RELEASE SAVEPOINT savepoint_name;
START TRANSACTION; SAVEPOINT sp1; INSERT INTO users (name) VALUES ('Alice'); ROLLBACK TO sp1; COMMIT;
START TRANSACTION; SAVEPOINT sp1; UPDATE accounts SET balance = balance - 100 WHERE id = 1; SAVEPOINT sp2; UPDATE accounts SET balance = balance + 100 WHERE id = 2; ROLLBACK TO sp2; COMMIT;
START TRANSACTION; SAVEPOINT sp1; DELETE FROM orders WHERE id = 10; RELEASE SAVEPOINT sp1; COMMIT;
START TRANSACTION; SAVEPOINT before_insert; INSERT INTO products (name, price) VALUES ('Pen', 1.5); ROLLBACK TO before_insert; INSERT INTO products (name, price) VALUES ('Pencil', 0.5); COMMIT;
SAVEPOINT in MySQL transactions?sp1 in MySQL?SAVEPOINT savepoint_name;.START TRANSACTION; INSERT INTO accounts VALUES (1, 100); SAVEPOINT sp1; UPDATE accounts SET balance = 200 WHERE id = 1; ROLLBACK TO SAVEPOINT sp1; COMMIT;
START TRANSACTION; SAVEPOINT sp1; ROLLBACK TO sp2; COMMIT;
Pass the test and this pattern moves unknown