죄송하게도 개인적으로 아직 VB 를 이용한 프로그래밍을 해 보지 않아 뭐라 말씀 드릴수가 없군요. 하지만 직접 테스트를 해 보시기 바랍니다. BEGIN 으로 시작된 transaction 은 COMMIT 를 시켜 주기 전에는 그 결과가 직접 디비에 반영되지는 않습니다. 작업후 ABORT 명령을 주면 이제까지 한 작업이 (transaction 이) 취소가 되지요.
그러니 conn.begintrasn .......... conn.committrans 로 작업을 해 보시고, 그 디비의 내용이 반영되었는지 확인해 보시기 바랍니다. 아울로 committrans 를 주지 않아고 작업을 끝낸 후 그 작업이 반영되었는지도 확인해 보시기 바랍니다. 그렇게 비교를 해 보시면 알수 있지 않을까요?
>>어떤생각 님께서 쓰시길<<
:: 전 vb를 이용해서 프로그램을 짜고 있읍니다만
::
:: 트랜잭션이 필요할때 odbc connection후 conn.begintrans와 conn.committrans를 이용해서 트랜잭션을
:: 처리하고 있읍니다.
::
:: 그런데 트랜잭션시 Lock을 걸려고 하니까 매뉴얼에
:: begin work;
:: lock share....;
:: select ... ;
:: insert ... ;
:: commit work;
:: 이런 식으로 처리하도록 되어 있군요.
::
:: 그런데 이걸 conn.begintrans로 처리해도 마찬가지 인가요?
:: 그러니까 vb program에서
::
:: connDB.Open ...
:: connDB.BeginTrans
:: connDB.execute "lock share .....
:: rsdb.open....
:: connDB.execute "insert.....
:: connDB.CommitTrans
:: 로 해도 마찬가지 입니까?
::
:: 아니면 역시
:: connDB.Open ...
:: connDB.execute "Begin work"
:: connDB.execute "lock share .....
:: rsdb.open....
:: connDB.execute "insert.....
:: connDB.execute "Commit work"
:: 로 해야 하는 건가요?
::
:: 차이를 알고 싶습니다. 그리고 성능차이는 없읍니까?
:: 답변에 감사드립니다.
|