¿Y por qué no utilizas las transacciones?
Código Delphi
[-] try
database1.starttransaction;
database1.commit;
except
On E: Exception do
begin
ShowMessage('Error al insertar ' + chr(13) + E.Message);
database1.rollback;
exit;
end;
end;
Yo tengo muchos usuarios concurrentes haciendo procesos críticos (sacando números de factura) y jamás he tenido problemas con este método. Lo único es que intento que las transacciones sean lo más pequeñas que sea posible.