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

FireBird Q&A
[2850] IBCConnection.AutoCommit문의
초보 [] 2394 읽음    2008-05-29 00:10
안녕하세요.

IBCConnection.AutoCommit 의문점이 있어서 문의를 드립니다.

문의사항
=>
IBCConnection.AutoCommit = true
IBCQuery.AutoCommit = true
으로 설정 한 후 버튼1을 클릭하였을 경우 'lock conflict on wait transaction'이 발생됩니다.
제가 버튼1에 'transaction'을 호출하거나 설정하지 않았는데 오류가 발생합니다.
혹시 AutoCommit도 내부적으로 'transaction'이 진행되는건가요?
그리고 PC1과 PC2에서 버튼1을 클릭하였을 경우 TEST테이블에 INSERT를 병행할수 는 없는건가요?
ex) 2008.05.29 / 1 / pc1
      2008.05.29 / 2 / pc1
      2008.05.29 / 3 / pc2
      2008.05.29 / 4 / pc2
      2008.05.29 / 5 / pc1
      2008.05.29 / 6 / pc2
      .....

오류메세지
=> lock conflict on wait transaction

테스트과정
=>
PC1과 PC2에서 버튼1을 동시에 클릭하거나
PC1에 버튼1을 클릭하여 For~Loop를 진행하는 동안
PC2에 버튼2을 크릭하면 오류발생.

작업환경
=> 서버: Firebird 2.1
     테이블: TEST
     컬럼: TESTDATE(PK)
             TESTNO(PK) -> triggers에 Insert Before의하여
                                      SELECT  INVL(MAX(TESTNO), 0) + 1  FROM  TEST
                                      WHERE   TESTDATE = NEW.TESTDATE
             TESTNAME
     개발툴: DELPHI 2007
     컴포넌트: IBCConnection, IBCQuery

코딩
=> // 버튼1을 클릭 이벤트(TEST테이블에 INSERT)
    For  IntLoop := 1 to 1000  Do
    begin
      IBCQuery.Close;
      IBCQuery.ParamByName('I_DATE').AsDate := Date;
      IBCQuery.ParamByName('I_NAME').AsString := Edit1.Text;
      IBCQuery.ExecSQL;
    end;  // For..Do

+ -

관련 글 리스트
2850 IBCConnection.AutoCommit문의 초보 2394 2008/05/29
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.