Hola, creo que ya te entendí, una vez que inicias una transacción esta no se detiene hasta que la última sentencia incluida en ella se cumpla correctamente. Puedes realizar varias consultas a la base de datos y si en alguna de ellas pasa algo, todo lo que se se haya procesado se cancela, en otras palabras "se hace por que se hace o no se hace nada",, este es el ejemplo:
Código Delphi
[-]var consulta:tadoquery;
begin
consulta:=tadoquery.Create(self);
consulta:=frm_md.conexion;
frm_md.conexion.BeginTrans;
try
with consulta do
begin
close;
sql.text:='insert into.....';
ExecSQL;
close;
sql.text:='delete from....';
ExecSQL;
Actualizar(0,'MEX',253,1);
end;
frm_md.conexion.CommitTrans;
consulta.free;
except
on e:exception do
begin
frm_md.conexion.RollbackTrans;
showmessage('Error en la transacción de tipo '+e.Message);
consulta.free;
exit;
end;
end;
Saludos transaccionales.