我的主從表是用ADODataSet,在插入后存盤,程序如下.
DM.ADOConnection.BeginTrans;
try
DataSet1.UpdateBatch();//主表保存
DataSet2.UpdateBatch();//从表保存
except
ADOConnection.RollbackTrans;
end;
跟蹤SQL-SERVER 的SQL Profiler得出分別用了針對兩個表用了insert語句, 當在存
盤時明細表的存儲過程出錯, 系統回滾, 當我修正明細數據后, 再存盤,跟蹤SQL-SERVER
的SQL Profiler 發現程序默認主表已插入,只插入從表,這要如何解決.
DM.ADOConnection.BeginTrans;
try
DataSet1.UpdateBatch();//主表保存
DataSet2.UpdateBatch();//从表保存
except
ADOConnection.RollbackTrans;
end;
跟蹤SQL-SERVER 的SQL Profiler得出分別用了針對兩個表用了insert語句, 當在存
盤時明細表的存儲過程出錯, 系統回滾, 當我修正明細數據后, 再存盤,跟蹤SQL-SERVER
的SQL Profiler 發現程序默認主表已插入,只插入從表,這要如何解決.
//首先设置DataSet的LockType 为ltBatchOptimistic
//提交时如下!
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
ADOConnection1.BeginTrans;//事务开始
try
ADOQuery1.UpdateBatch(arAll);
ADOQuery2.UpdateBatch(arAll);
ADOConnection1.CommitTrans;//事务结束
except
ADOConnection1.RollbackTrans;//出错时回滚
raise;
end;
如果, ADOQuery2.UpdateBatch(arAll);造成提交失败(失败原因是数据不完整).
当更改完整之后.再进行提交,事务成功.则ADOQuery2的数据集正常提交,而
ADOQuery1的数据集没有提交.