Development/Delphi

TDataSet 관련 (TQuery, TFDQuery)

코드의추억 2015. 8. 24. 13:05

#. TDataSet.CachedUpdate := True;

 DB 에 다이렉트 적용이 아닌 클라이언트 메모리에서 처리후 DB 적용


CachedUpdate 예제

FDQuery1.CachedUpdate := True; //클라이언트 캐쉬를 이용한다
FDQuery1.Append;
...
FDQuery1.Post; //클라이언트 캐쉬에 적용(확정) 한다.
FDConnection1.StartTransaction; // 트랜잭션 시작
iErrors := FDQuery1.ApplyUpdates; // 실제 DB 적용
if iErrors = 0 then begin
  FDQuery1.CommitUpdates; //클라이언트에 남아 있는 변경로그를 비운다.
  FDConnection1.Commit; // 실제 DB commit
end
else
  FDConnection1.Rollback; // 실제 DB rollback


TFDDataSet.UpdatesPending

  변경(입력,수정,삭제) 로그에 대한 레코드가 존재하는지 True/False 를 반환한다.

  FFDQuery.ApplyUpdates 로 실DB 적용한 후 FFDQuery.CommitUpdates 를 호출해서 변경로그를 비워준다.

  변경로그 초기 상태로 가야할 경우(취소, 예외발생 등) FFDQuery.CancelUpdates 를 호출해서 변경로그를 되돌린다.

  현재 레코드만 되돌릴때는 FFDQuery.RevertRecord 를 호출해서 변경로그를 되돌린다.


// FireDAC 캐쉬를 이용한 업데이트

http://tech.devgear.co.kr/?mid=delphi_news&m=1&category=10722&document_srl=409889