소스들을 보면 가끔씩 commit work, roallback work. 가 쓰이는데
어렴풋이 지나가는말로 들어서 대충은 보일듯 말듯 보일듯 말듯 한 이 느낌을
속시원하게 보이게끔 풀어주세요~
정확히, 어떤때 쓰이는 문법인지 용도나 사용법등이 궁금합니다.
댓글 7
-
요요
2009.12.16 20:41
-
Jon
2009.12.16 23:39
내용 추가하자면...
db 셋팅값중에 auto commit 이 있습니다.
보통 오라클은 수동 commit , ms-sql은 자동 commit 으로 셋팅되어 있습니다.
내용은 요요님의 글처럼 이해하시면 문제 없을듯합니다.
-
bizarre
2009.12.17 00:38
답변 감사드립니다 요요님의 답변으로 의미는 알겠는데
보통 어느때 사용을 하는건지 궁금하군요 간단한 소스로 예를든 설명좀 부탁드립니다
커밋을 사용했을때랑 안했을때의 차이라든가 그런점이 궁금합니다~
-
Jon
2009.12.17 00:50
2개의 테이블에 (헤더,아이템) 데이터를 insert 하는 중에 헤더 테이블에만 정상 인서트되고, 아이템 테이블에는 에러가 났을 경우,
헤더,아이템 테이블간의 데이터 컨시턴스가 틀어지게 되겟지요.
이때 롤백을 하게 됩니다. (롤백하지 않을 경우 헤더 테이블에는 쓰레기 데이터가 남게되겟지요)
두 테이블 모두 정상 처리되었을 경우 커밋하게 되는거구요.
db에서 trigger 처리의 의미로 생각하면 비슷할겁니다., 테이블 / 레코드 rock 같은 의미도 참고하셔도되구요.
-
makeA
2009.12.17 01:11
기술적인 내용은 요요님말씀대로 이해하시면 되구요.
개념적으로 잘 모르시겠다면
DB에서 트랜잭션이라는 개념을 이해하시면 됩니다.
은행의 업무를 예로 들면 A라는 계좌에서 B라는 계좌로 100원을 이체한다면
1. A계좌 에서 - 100
2. B계좌에서 + 100 을 해줘야겠지요?
근데 만약 이게 1, 2 둘중 하나만 일어나고 말아버리면 이사람의 돈 100원은 어디로 날아가 버리기 때문이 이런걸 묶어서 한개의 트랜잭션으로 묶습니다. 그래서 ALL OR NOTHING으로 둘다 처리 되던가 아님 중간에 오류가 나면 처음 상태로 돌려놔야하죠.
그래서 1. A 에서 - 100 2. B 에서 + 100 을 수행후 이러한내용을 일단 임시저장소에 저장해놓구요 둘다 에러 없이 수행되었으면 COMMIT WORK로 실제 데이타베이스에 반영시키고, 혹시 중간에 오류가 났으면 ROLLBACK WORK 로 실제 데이타베이스에도 저장되지 않고 임시저장소에도 해당내용을 돌려놓게 됩니다. 그러면 1번의 A계좌에서 돈을 100원 인출하기 이전의 상태로 복구되게 됩니다.
참고로 SAP LUW라는 의미도 찾아보시면 훨씬 개념이해에 도움이 되실꺼예요. ^^
-
bizarre
2009.12.17 02:53
많은 답변들 정말 감사합니다 덕분에 궁금점이 해결되었네요 ^^
실제 테스트해보러 슝~*
-
초보자
2010.12.07 17:45
좋은 정보 감사합니다.
제가 알고 있는 것으로는 데이터를 DB 에 저장하기 위하여 임시로 Buffer 에 저장하고
물리적인 저장을 할것인지 말것인지 결정하기 위한 문장으로 알고 있습니다.
commit work 를 하면 물리적인 저장까지 완료하라고 하는 것이고
rollback work 를 하면 물리적인 저장을 하지말고 취소(buffer 내용도 삭제)하라는 것으로
그냥 개념적으로만 알 고 있습니다. OPEN SQL 중 DB 관련된 INDERT, UPDATE, MODIFY
를 할 경우 관계가 있다고 볼 수 있습니다.