Q&A

  • [질문]zeos 에서 트랜잭션처리?

mysql 을 zeos 에서 트랜잭션을 처리할려고 하는데..
autocommit := false 를 셋팅하고 데이타를 입력하면
데이타가 입력이 되지 않습니다.
updatedsql 콤포넌트를 사용해도 동일합니다.
autocommit := true; 로 셋팅하면 데이타 입력이 잘되는데
트랜잭션 처리가 안되니...

무슨문제인지 아니면 zeos 가 불가능한건지.. (mysql 은 5.x 버젼입니다.)

try
if not db.intransaction then db.starttransaction;
query1.append;
query1.fieldbyname('name').asstring := edit1.text;
query.post;
query.applyupdates;
db.commit;
except
on e:exception do begin
   db.rollback; messagedlg(e.message, mtrrror, [mbOK], 0);
end;
end;

3  COMMENTS
  • Profile
    최용일 2009.04.17 05:04
    InnoDB같이 트랜잭션을 지원하는 테이블로 만들어야지 사용할 수 있다는데... 확인해보세요...
  • Profile
    후초보 2009.04.18 00:35
    답변 감사드립니다.
    db 생성시 inno db로 생성했습니다.

    테이블 속성확인해 보면 inno db 로 되어 있습니다
  • Profile
    박성훈 2010.10.06 21:02
    제가 아는 바로는 SQL문장을 이용해서 해결하셔야 하는 것 같습니다. 아래와 같은 형태로 처리하시면 될 듯 합니다.
    쿼리 시작 전에 'START TRANSACTION' 이라는 SQL문장을 실행하고 끝나면 COMMIT 을, 에러시에는 ROLLBACK을 호출하시면 됩니다.


    //'START TRANSACTION';
    try
    //Codes here...
    //'COMMIT';
    except
    //'ROLLBACK';
    end;