SQL문장을 수행 할 때 발생 할 수 있는 오류 부분에 대해서 수정이 가능합니다.
문장을 수행하는데 오류가 있다면 RollBack를 만나 이전상태로 돌아가고
문장을 수행하는데 오류가 없다면 Commit를 만나 안전하게 수행됩니다.
Create Table dbo.TranTest
(
Num Int Identity(1, 1) Not Null Primary Key,
Name VarChar(25) Not Null,
PostDate SmallDateTime Default(GetDate())
)
--[2] 샘플데이터입력
Insert Into TranTest(Name) Values('홍길동'),('한라산'),('백두산')
--[3] 출력
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
Begin Tran
Delete TranTest Where Num = 2 --성공
Select aaa From aaa --실패
Delete TranTest Where Num = 3 --실행되지않음
If @@ERROR > 0
RollBack Tran
Commit Tran
--[6] 트랜잭션에별칭부여
Begin Tran
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
RollBack Tran --w전체트랜잭션을되돌린다.
Commit Tran
Select *From TranTest
--[8] 트랜잭션단계확인
Begin Tran
Update TranTest Set Name = '트랜잭션' Where Num = 8
Begin Tran
Update TranTest Set Name = '트랜잭션' Where Num = 9
Select @@TRANCOUNT --2개
RollBack Tran --전체트랜잭션을되돌린다.
Commit Tran
--[9] 트랜잭션의주요사용
Begin Tran
Insert Into TranTest(Name) Values('홍길동')
Update TranTest Set Name = '트랜잭션' Where Num = 14
Insert Into TranTest(Name) Values('홍길동')
If @@ERROR > 0 --명시적으로트랜잭션되돌리기
Begin
RollBack Tran
End
Commit Tran
--[10] 한번처리에여러개의구문처리시트랜잭션을반드시적용
Begin Tran
Insert문
Update문
Delete문
Commit Tran
'DataBase > MS SQL' 카테고리의 다른 글
46.MS_SQL 2008 - 도시락 주문프로그램 - 최종 (0) | 2009.09.21 |
---|---|
45.MS_SQL 2008 - 도시락 주문 테이블 (0) | 2009.09.21 |
43.MS_SQL 2008 - Output과 Return 키워드 (0) | 2009.09.18 |
42.MS_SQL 2008 - 입력,출력,상세,수정,삭제,검색,뷰,인덱스 복습 (0) | 2009.09.17 |
41.MS_SQL 2008 - Select 기타 키워드 (0) | 2009.09.17 |
Comments