| Home | Print | Q/A | Guest | NewsLetter |
|
BEGIN;
UPDATE accounts SET balance = balance - 100.00 WHERE name = ’Alice’; -- etc etc COMMIT; BEGIN ~ COMMIT/ROLLBACK을 쓰면 된다.
아래는 SAVEPOINT라는 키워드가 나온다.. BEGIN;
UPDATE accounts SET balance = balance - 100.00
WHERE name = ’Alice’;
SAVEPOINT my_savepoint;UPDATE accounts SET balance = balance + 100.00
WHERE name = ’Bob’;
-- oops ... forget that and use Wally’s accountROLLBACK TO my_savepoint; UPDATE accounts SET balance = balance + 100.00
WHERE name = ’Wally’;
COMMIT;위의 트랜잭션 처리과정을 설명하면 다음과 같다.
1. 트랜잭션 시작
2. UPDATE
UPDATE accounts SET balance = balance - 100.00
WHERE name = ’Alice’;
3. SAVEPOINT my_savepoint : 트랜잭션의 시작 시점에서 지금까지 저장4. UPDATE UPDATE accounts SET balance = balance + 100.00
WHERE name = ’Bob’;
5. 실수 발생6. ROLLBACK TO my_savepoint : 저장된 SAVEPOINT로 복귀
7. UPDATE
UPDATE accounts SET balance = balance + 100.00
WHERE name = ’Wally’;
8. 트랜잭션 완료 |
|