MSSQL - SAVE TRANSACTION (트랜잭션 세이브 포인트, 임시 저장)

반응형

 

SAVE TRANSACTION

  • 트랜잭션 내에서 사용 가능
  • 특정 구간에 세이브 포인트 생성
  • 전부 롤백이 아닌 지정한 구간으로 롤백 할 수 있게 하는 기능

구문

  • SAVE 세이브포인트명
  • 세이브포인트명으로 해당 구간 롤백

사용 예시

1. 세이브포인트를 두개 지정해보고,

2. 첫번째 세이브 포인트로 롤백하고,

3. 커밋해보기

-- table info : id(1), name('puppy'), age(4)
select * from MyPet where id = '1'
-- age = 4

BEGIN TRAN
    update MyPet set age = '1' where id = '1'
    -- create savePoint1
SAVE TRAN savePoint1 -- 1
    select * from MyPet where id = '1'
    -- age = 1 / savePoint1 age = 1

    update MyPet set age = '2' where id = '1'
    -- create savePoint2
SAVE TRAN savePoint2 -- 2
    select * from MyPet where id = '1'
    -- age = 2 / savePoint2 age = 2

ROLLBACK TRAN savePoint1
    select * from MyPet where id = '1'
    -- age = 1 / call savePoint1 age = 1

COMMIT TRAN
    select * from MyPet where id = '1'
    -- commit, age = 1

반응형