반응형
트랜잭션
========
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 account
ROLLBACK 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. 트랜잭션 완료
========
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 account
ROLLBACK 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. 트랜잭션 완료
반응형