三层中两个表数据同时更新,如何作在一个事务里?(100分)

  • 主题发起人 主题发起人 cjjqd
  • 开始时间 开始时间
C

cjjqd

Unregistered / Unconfirmed
GUEST, unregistred user!
通过vDAta1,vData2传递数据到中间层,使用dataseprovider.applyupdates更新数据库,如何保证两个表的数据同时成功或者同时取消?谢谢
 
还是自己写更新吧,可以这样:
SaveData;
在BeforeApplyUpdates时,自己把Delta存起来
等客户端的表都ApplyUpdate以后,这时候客户端再调用SaveData
SaveData方法可以这样写
begin
DataConnection.begin
Trans;
try
更新数据 //此处写自己更新数据的方法
DataConnection.Commit;
except
DataConnection.Rollback;
end;
end;
 
procedure TMTSDataModule1.UpdateData(vData1,vData2:OleVariant);
var
FTransactionContextEx:ITransactionContextEx;
ErrorCount:Integer;
OwnerData:OleVariant;
begin
FTransactionContextEx:=CreateTransactionContextEx;
try
DataSetProvider1.ApplyUpdates(vData1,0,ErrorCount,OwnerData);
DataSetProvider2.ApplyUpdates(vData2,0,ErrorCount,OwnerData);
FTransactionContextEx.Commit;
except
FTransactionContextEx.Abort;
raise;
end;
end;
 
多人接受答案了。
 
后退
顶部