我不确定我是否写得正确。
procedure TMainForm.AdvGlowButton1Click(Sender: TObject);
begin
DataModule2.INS_Query.Close;
DataModule2.INS_Query.SQL.Clear;
DataModule2.FDTransaction1.StartTransaction;
try
if cxlookupcombobox1.Text ='' then begin
....
....
DataModule2.INS_Query.ExecSQL;
DataModule2.FDTransaction1.Commit;
end else begin
if cxlookupcombobox1.Text <>'' then
......
......
DataModule2.INS_Query.ExecSQL;
DataModule2.FDTransaction1.Commit;
end;
except
on e: exception do begin
Showmessage(format('Error occured. Error is: %s',[e.message]));
DataModule2.FDTransaction1.Rollback;
DataModule2.MYTABLE.Cancel;
end;
end;
它执行得很好,但有些事情在唠叨我。
DataModule2.FDTransaction1.Commit;
必须提交两次吗?或者我是否正确地编写了这个查询?
答案 0 :(得分:3)
没有。仅为已启动的事务提交一次。通常,伪代码中的代码构造如下所示:
Transaction.Start;
try
Query.Execute;
Query.Execute;
...
Transaction.Commit;
except
Transaction.Rollback;
raise;
end;
由于您只提交一次,因此您的代码似乎是正确的。