Programming/Microsoft SQL Server
Table의 Data를 변경하거나 삭제할때는 항상 주의를 기울여야 합니다. 한번 변경/삭제된 Data는 백업을 통하지 않는 이상 되돌리기가 상당히 곤란하기 때문입니다.

하지만 실제 Upate하거나 Delete로 삭제해보기 전까진 이 작업수행이 옳은것인지 확신할 수 없다면 Transaction을 사용하십시오. Transaction는 Table의 Data를 변경,추가,삭제한 이후 라도 얼마든지 원래상태로 되돌릴 수 있도록 해줍니다.

다음은 Transaction을 활용한 예제입니다.

Begin Tran

위 구문은 Transaction시작을 의미합니다. 이렇게 한 이후에 수행되는 모든 Table변경 작업은 실제 Table에 반영되지 않고 대기상태에 머물게 됩니다.(단 보여줄때는 Table의 변경상태를 보여주게 됩니다.)


Select * From HumanResources.EmployeePayHistory

HumanResources.EmployeePayHistory Table의 내용을 확인합니다.


Delete From HumanResources.EmployeePayHistory

HumanResources.EmployeePayHistory Table의 모든 Data를 삭제합니다.


Select * From HumanResources.EmployeePayHistory

삭제한 이후 HumanResources.EmployeePayHistory Table의 내용을 확인합니다.


Table의 Data가 모두 삭제되었습니다.
이 작업이 잘못되었다는 가정아래 다시 Table의 상태를 원래대로 되돌리겠습니다.

Rollback

Begin Tran 이후 작업된 모든 Data변경 작업을 취소합니다.


Select *
From HumanResources.EmployeePayHistory

HumanResources.EmployeePayHistory Table의 내용을 확인합니다.


Rollback을 통해 Table이 다시 원래의 상태로 되돌아 왔습니다.
Transaction이 유지되는 기한은 Rollback 혹은 아래 설명드릴 Commit까지 입니다.

만일 변경된 부분이 옳은경우 Rollback 대신 Commit을 실행합니다.

Commit

Begin Tran이후에 실행되었던 모든 변경작업을 완료합니다.

Commit은 대기상태에 머물러 있던 모든 변경작업이 실제 Table에 반영되도록 합니다. Rollback이나 Commit작업이후에 Transaction은 종료되므로 이후에 Transaction을 재 적용하려면 Begin Tran을 다시 실행시켜야 합니다.
0 0