FireBird Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
파이어버드 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
IBPhoenix
FireBird Main site
볼랜드포럼 광고 모집

FireBird Q&A
[2646] Re:Re:Re:[질문]ibquery 와 commit 고수님들은 어떻게 하시는지요?
까막 [ggamagui] 2946 읽음    2007-11-17 11:43
외롭다 님이 쓰신 글 :
: 까막 님이 쓰신 글 :
: : 외롭다 님이 쓰신 글 :
: : : 먼저 델마당에 올렸던 질문이나 파이어버드 QnA에서 더 만족스런 답변을 얻을 수 있을것 같아 다시 질문올립니다.
: : :
: : : [조건]
: : :  
: : : - 한개의 데이터를 여러 pc가 참조합니다.
: : : - 데이터베이스는 파이어버드2.0입니다.
: : : - 프로그램은 ibdatabase, ibtransaction, ibquery를 사용해서 조회, 입력, 수정, 삭제등의 작업을 하고 있습니다.
: : :  
: : : [문제점1]
: : :  
: : : - 위의 조건처럼 한 데이터 베이스를 여러 피씨가 참조하는 경우...
: : : 한쪽 pc에서 입력한뒤 다른쪽 pc에서 방금 입력한 자료를 조회해도 나타나지 않습니다.(일반 query는 상관 없다고 합니다. ibquery의 특성인가 봅니다.) 
: : :  
: : : [문제점1에 대한 해결]
: : :  
: : : - 그래서...조회를 하기전에 ibtransaction.commit을 하도록 하였습니다.
: : : - 일단 결과는 만족입니다. 언제 어떤 pc에서 조회하더라도 입력한 자료가 나타납니다.
: : :  
: : : [문제점2]
: : :  
: : : - 그런데... 항상 commit을 사용하니 한 창에 2~3개의 grid를 놓고 작업을 하면 commit하는 순간 모든 grid의 내용이 없어져 버립니다.
: : : - 또, main form위에 sub폼을 열도록 하는경우 sub폼에서 commit을 사용하면 main폼의 grid내용도 없어져 버립니다.
: : : - 그리고, 항상 조회하기전에 commit을 사용하니 이건 뭔가 말도안되는 삽질하는 기분이... 이건 아닌것 같습니다.
: : :  
: : : [질문]
: : :  
: : : 그러면...
: : : 1. 고수님들은 server client 환경의 프로그램을 개발할때 어떤 방식으로 commit처리를 하시는지요?
: : : 2. 위의 문제처럼 한 창에 2~3개의 grid를 놓았을때는 또 어떻게 commit처리를 하십니까?
: : : 아... 지금이라도 ibquery를 버리고 bde의 query를 사용해야 하는지...
: : : 아무리 게시판을 검색해 봐도 위와 비슷한 내용의 질문은 있으나 딱부러진 결과는 없는것 같습니다.
: : : 죄송하지만 위와같은 문제점을 해결하셨거나 격어 보셨던 고수님들의 답변 바랍니다.
: :
: : 안녕하세요. 까막입니다.
: :
: : IBTransaction 을 두개를 사용하세요.
: : ITR_Search,  ITR_Arrow 이렇게 두개를 만드시고요.
: :
: : ITR_Search 에 연결된 Query 나 STP 는 그냥 조회용으로만 쓰시고요.
: : 물론 BeginTran..., Commit 은 필요 없겠죠.
: :
: : ITR_Arrow 에 연결된 Query 나 STP 는 데이터 추가/수정/삭제 등에 쓰세요.
: : 이거는 시작전에 BeginTransaction, 마치고 Commit, 오류면 Rollback 을 해주셔야 겠죠.
: :
: : 이렇게 하시면 아무 문제 없으실 겁니다.
: :
: : 이 밤에 뭐하는 짓인지.. 하하.
: : 좋은 하루 되세요.
: :
: :
: :
: : 위대한 단군혼이 살아있는 나라.... 대한민국.
:
: 까막님... 답글 정말 감사합니다.
:
: 아침에 까막님 글을 읽고 방금 테스트를 해 보았습니다.
:
: 아... 결과는... 절망적입니다.
:
: [작업]
: ITR_Search -> 조회용               -> commit 하지않음
: ITR_Arrow   -> 입력,수정,삭제용 -> 작업후 commit 함
:
: [결과]
: [A] pc에서 고객정보를 수정하였으나 [B] pc에서 수정된 고객정보의 결과가 반영되지 않음...
: [A], [B] pc의 프로그램을 모두 종료하였다가 다시 실행시켜보니 수정한 결과가 반영되어 나타납니다.(아마도 ITR_Search 가 프로그램 종료되며 Commit되지 않았나 싶습니다.)
:
: 까막님 말씀대로라면 본래 질문의 [문제점2]는 해결이 되나 [문제점1]은 해결되지 않는것 같습니다.
: 혹시 transaction의 속성에서 뭔가를 설정해 줘야 하나요?
: AutoStopAction = saNone
: DefaultAction = TACommit
: 입니다.
:
: 정말 죄송하지만... 한번 더 답변해 주실 수 있을까요?
:
: 만약 위와같은 실질적인 문제가 해결되지 않는다면 까막님 말씀대로 transaction을 여러개 쓴다음 상황에따라서 Commit을 해 주어야 할까요?
:
: 아... 답답합니다.

안녕하세요. 까막입니다.

제가 지금 그렇게 해서 쓰고 있거든요.
결과 반영이 바로 바로 되고요.
세부 설정에서 차이가 있는거 같네요.

ITR_Search - 조회용.
-> DefaultAction : TACommitRetaining
-> AutoStopAction : saRollback

ITR_Arrow - 데이터 처리용.
-> DefaultAction : TACommit
-> AutoStopAction : saNone

뭐 이거 말고는 다른게 없네요.
테스트도 했는데, 아무 문제 없이 다른 곳에도 적용이 됩니다.



위대한 단군혼이 살아있는 나라.... 대한민국.

+ -

관련 글 리스트
2643 [질문]ibquery 와 commit 고수님들은 어떻게 하시는지요? 외롭다 2425 2007/11/16
2659     조회 하기전에 커밋한다? 아폴론 2648 2007/11/27
2644     Re:[질문]ibquery 와 commit 고수님들은 어떻게 하시는지요? 까막 2565 2007/11/17
2645         Re:Re:[질문]ibquery 와 commit 고수님들은 어떻게 하시는지요? 외롭다 2156 2007/11/17
2646             Re:Re:Re:[질문]ibquery 와 commit 고수님들은 어떻게 하시는지요? 까막 2946 2007/11/17
3020                 Re:Re:Re:Re:[답변]ibquery 와 commit 고수님들은 어떻게 하시는지요? 프로그래머 1960 2009/02/28
2647                 Re:Re:Re:Re:[질문]ibquery 와 commit 고수님들은 어떻게 하시는지요? 외롭다 2579 2007/11/17
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.