본문 바로가기
Database/PGSQL

트랜잭션

by 반화넬 2007. 6. 4.
반응형
트랜잭션
========

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