×
データの操作
-- 振込処理のトランザクション例
UPDATE accounts SET balance = balance - 100000 WHERE account_id = 'A001';
UPDATE accounts SET balance = balance + 100000 WHERE account_id = 'B002';

-- 問題なければコミットで確定
COMMIT;

-- SAVEPOINT を使った部分ロールバックの例
SAVEPOINT before_update;
UPDATE items SET price = price * 1.1;
ROLLBACK TO SAVEPOINT before_update; -- SAVEPOINT までロールバック
SAVEPOINT を使うと、トランザクション全体ではなく特定のポイントまでの変更だけを取り消すことができます。

もう少し詳しく