Q&A

  • transaction 처리에 관해서...
안녕하세요? 더운날씨에 모두 열심이군요...



database1.starttransaction;

try

data_insert; // 프로시져로 데이터를 입력하죠... 문제는 여기에 있습니다.

database1.commite;

showmessage('ok');

except

database1.Rollback;

end;



data_insert 프로시져에서 입력값에 오류가 있어서 쿼리 문은 만나지 못하고

그냥나오게 되는데... showmessage 함수가 호출이 된답니다. 그러면 안되는데...

만약 starttransaction 을 시작하고 commite 나 rollback 함수를

만나지 않아도 되는지요.. 예로 강제종료한다거나 해도 되는지 ...

그럼 답변 기다리겠습니다.

2  COMMENTS
  • Profile
    성호종 2000.07.11 19:50
    혀기 wrote:

    DB Mode에 따라 다릅니다.

    DB가 default로 commit모드이면 commit문장을 만나지 않으면 자동으로 rollback이지요.

  • Profile
    김영해 2000.07.11 17:57
    혀기 wrote:

    > 안녕하세요? 더운날씨에 모두 열심이군요...

    >

    > database1.starttransaction;

    > try

    > data_insert; // 프로시져로 데이터를 입력하죠... 문제는 여기에 있습니다.

    > database1.commite;

    > showmessage('ok');

    > except

    > database1.Rollback;

    > end;

    >

    > data_insert 프로시져에서 입력값에 오류가 있어서 쿼리 문은 만나지 못하고

    > 그냥나오게 되는데... showmessage 함수가 호출이 된답니다. 그러면 안되는데...

    > 만약 starttransaction 을 시작하고 commite 나 rollback 함수를

    > 만나지 않아도 되는지요.. 예로 강제종료한다거나 해도 되는지 ...

    > 그럼 답변 기다리겠습니다.





    일반 except 처리에서는 잘 안되구요 다음과같이 해보세요..



    try

    Database1.StartTransaction;

    UDP_INSERT;

    Database1.Commit;



    except

    on e:EDBEngineError do

    Database1.Rollback;

    END;