void __fastcall CommitRetaining();
Permanently stores the modifications to the data made in the current transaction, without ending the current transaction.
Call CommitRetaining to permanently store modifications, such as those caused by the INSERT, UPDATE, or DELETE command, made in the current transaction to the database, without finishing the transaction.
FireDAC supports nested transactions, so the current transaction is the one started with the most recent StartTransaction call. If the database does not support nested transactions, like most of DBMSs, then FireDAC emulates nested transactions using savepoints. CommitRetaining is useful only for the main transaction, not for nested ones.
procedure TForm1.DoThatButtonClick(Sender: TObject); begin FDConnection1.StartTransaction; try if CustomerQuery.Locate('ID', ) then begin CustomerQuery.Edit; CustomerQuery.FieldByName('status').AsString := 'top'; CustomerQuery.Post; FDConnection1.ExecSQL('delete from debt where CustID = 100'); FDConnection1.CommitRetaining; end; except FDConnection1.RollbackRetaining; raise; end; end;