안녕하세요.
c/s환경에서의 마이다스 db applyupdate처리방법때문에 애를 먹고 있습니다.
db 하나만 조작할때문 문제가 없습니다만
두개이상의 db를 제어할때 항상 문제가 발생하고 있습니다.
clientdataset1 = master
clientdataset2 = details
clientdataset3 = etc
try
clientdataset1.applyupdate(-1);
clientdataset2.applyupdate(-1);
clientdataset3.applyupdate(-1);
except
end;
현재는 이렇게 처리하고 있습니다만 3번 clientdataset3에서 문제가 발생하면
1.2 dataset는 등록이 되어버림니다.
1,2,3 다될려면 다되고 아니면 안되야 되는데
어떻게 처리해야할지 감을 못잡겠습니다.
그렇다고 아래와같이 처리할수도 없고... 갈켜주세요.
Database1.StartTransaction;
try
Master.ApplyUpdates;
Detail.ApplyUpdates;
Database1.Commit;
except
Database1.Rollback;
raise;
end;
Master.CommitUpdates;
Detail.CommitUpdates;
수고하세요.
try
Master.ApplyUpdates;
Client.ApplyUpdates;
Etc.ApplyUpdates;
except
DataBase1.Rollback;
Exit;
end;
DataBase1.Commit;
모든 저장루틴을 Transaction에 걸고 에러 유발시에만 Rollback를 하는게 보편적인 방법입니다.
Commit에서 에러 유발시에는 직접적으로 그 데이타를 찾아서 Delete하는 수 밖에 없어요...
대부분 ApplyUpdates에서 Pass가 되면 Commit적용할때는 그대로 Pass가 됩니다.