안녕하세요 삽잡이입니다.
이번 시간에는 Transaction 에 대해서 알아보려고합니다.
트랜잭션은 DB 뿐만 아니라 다른 곳에서도 많이 사용됩니다.
이는 '성공 아니면 실패'. 단 두가지의 상태만을 가질 수 있는 '단위'를 의미합니다.
어중간한 상태가 없습니다.
이를 뚜렷하게 하기 위해 만든 단위가 바로 트랜잭션입니다.
DB에서는 딱 '두가지 상태만을 갖는 명령어 집합'을 의미합니다.
트랙잭션에 사용되는 명령에는
Insert, Delete, Update가 있지요.
돈뽑으러 간다고 생각해봅시다.
ATM기에서 돈을 뽑았는데 오류가 발생했습니다.
그래서 돈을 못뽑았습니다.
그런데, 은행 기록을 보니 이미 돈은 뽑혀있었습니다...
이게 말이 됩니까?
결론적으로,
무조건 성공하던가 실패하던가...
실패를 했다면, 한번도 시도하지 않은 것처럼 Rollback 되야하겠지요.
DB에서는 매우 중요한 일입니다.
Slect 명령과는 관계 없는 이유에 대해서 감이 오십니까?
바로, 상태 변화와 관련을 갖는 이유이기 때문입니다.
DB에서는 언제 문제가 생길지 모릅니다.
더군다나 DB는 삭제하면 복구할 수 있는 방법이 없습니다.
따라서, 트랜잭션이 존재하는 것입니다.
트랜잭션은 BeginTransaction(), Commit(), Rollback() 메서드가 존재합니다.
즉, 시작점과 완료를 위한 끝점이 존재하는 것이지요.
문제가 생길 시에는 아무일도 없던 것 처럼 Rollback() 메서드를 제공해줍니다.
작업이 무사히 완료됬을 때의 확정했다는 의미의 Commit(),
문제가 생겼으니 다시 돌아가라는 의미의 Roolback().
이와 같은 액션이 있는 개념을 트랜잭션이라고 한다 이겁니다.
물론, DB외에도 이와같은 개념이 필요한 곳에서는
트랜잭션이 사용됩니다.
이렇게 두가지 이상의 명령을 한 코드내에 사용하게 될 때에는
트랜잭션을 사용해줘야합니다.
두가지 명령을 실행할 떄
Transaction 객체를 생성해서 코드 수행을 하는 것입니다.
두개 이상의 명령에 하나의 트랜잭션을 거는 것이지요.
이렇게 되면 성공하거나 혹은 실패하거나 같이 결과가 나오게 됩니다.
이번 시간은 여기까지 하도록 하겠습니다.
이상 삽잡이였습니다!
<참고 : C# and the .NET4 Platform>
'삽질의 현장 > - .NET' 카테고리의 다른 글
#093_닷넷(.NET)_ ADO.NET - 비연결 계층 코드 (0) | 2015.11.20 |
---|---|
#092_닷넷(.NET)_ ADO.NET - 비연결 계층 개념 (0) | 2015.11.20 |
#091_닷넷(.NET)_ ADO.NET - DB 모델링 (0) | 2015.11.19 |
#090_닷넷(.NET)_ ADO.NET - 자리표시자 & 저장 프로시저 (0) | 2015.11.19 |
[삽잡이::C#] ADO.NET_Command Type (0) | 2015.11.18 |