DBExpress에서요.
저장하고 난후..
오류가 생기면 RollBack처리를 해야된는데..
아래 문장은 계속 Commit 처리만 되네여..
예를들어
키중복이나면.. Except문으로 분기가 되야 되는데..
분기가 되지 않고 정상적으로 처리가 되여..
왜그런지 도저히 알수 가 없네여..
아시는분 점 갈켜주세요.
[참고]
db는 Interbase입니다.
if not SQLConnection1.InTransaction then begin
TD.TransactionID := 1;
TD.IsolationLevel := xilREADCOMMITTED;
SQLConnection1.StartTransaction(TD);
end;
Try
ClientDataSet1.ApplyUpdates(0);
SQLConnection1.Commit(TD);
ShowMessage('커밋처리');
Except
ShowMessage('롤백처리');
SQLConnection1.Rollback(TD);
end;
이걸 사용하셨으면, 업데이트 시 에러가 발생을 하여도 익셉션으로 넘어가지는 않지요.
if ClientDataSet1.ApplyUpdates(0) <> 0 then Abort;
이런 식으로 써주시면, ApplyUpdates의 결과값이 0이 아니란 얘기는 에러가 발생하였다는 뜻으로, 익셉션으로 넘어가게 될겁니다.
테스트 해보세요. 저는 ADO와 붙여서 사용할 때 해본 방법입니다.