.Net Project/WindowServer2008

31장 트랜잭션 활용

래곤 2009. 9. 18. 11:08
반응형

 use tempdb
Create Table dbo.TranTest
(
 Num Int Identity(1,1) Not Null Primary Key,
 Name VarChar(25) Not Null,
 PostDate SmallDateTime Default(GetDate())
)
Go

--샘플 데이터 입력
Insert Into TranTest(Name) Values ('홍길동'),('한라산'),('백두산')
Go

--출력
Select *From TranTest
Go


--[4] 트랜잭션 테스트(롤백) : Begin Tran ~ Rollback Tran
--[a] 트랜잭션 시작

Begin Tran

--[b] SQL 구문 실행
Delete TranTest Where Num = 2

--[c] 트랜잭션 롤백 : 트랜잭션 이전으로 상태 되돌리기(구문취소...)
RollBack Tran

-- [5] 트랜잭션 처리 :Begin Tran ~ Commit Tran
--에러가 발생하는 구문이 나오면 RooBack 하는 방식으로 사용  

Begin Tran
 Delete TranTest Where Num=2 --[5-1]성공
 Select aaa From aaa -- [5-2]실패 
 Delete TranTest Where Num =3 --[5-3] 실행되지 않는다

 If @@ERROR > 0
  RollBack Tran
Commit Tran


--[6] 트랜잭션 별칭 부여
Begin Tran DeleteData
 Delete TranTest Where Num = 3
 Select *From TranTest
RollBack Tran DeleteData

--[7] 다중 트랜잭션 처리
Begin Tran
 Delete TranTest Where Num = 6
 Begin Tran
  Delete TranTest Where Num = 7
  Select @@TRANCOUNT -- 2개
RollBack Tran --전체 트랜잭션을 되돌린다   
-- Commit Tran

--[8] 트랜잭션 단계 확인
Begin Tran
 Update TranTest Set Name = '트랜잭션1' Where Num = 8
 Begin Tran
 Update TranTest Set Name = '트랜잭션2' Where Num = 9
  Select @@TRANCOUNT --2개
RollBack Tran --전체 트랜잭션 되돌린다
--Commit Tran   

--[9] 트랜잭션의 주요 사용
Begin Tran
 Insert Into TranTest(Name) Values('홍길동')
 Update TranTest Set Name = '트랜잭션1' Where Num = 14
 
 Insert Into TranTest(Name) Values('홍길동')
 
 If @@ERROR > 0 --명시적으로 트랜잭션 되돌리기
 Begin 
  RollBack Tran
 End
Commit Tran   


반응형