Amigo
ElMug, si quieres hagamos una prueba, a ver si sqlite la pasa con éxito:
En una tabla donde tengas ya registros, o creas una nueva, no importa que sea simple, ejemplo:
Código SQL
[-]create table tbPrueba (
id integer not null,
nombre varchar(64),
telefono varchar(9),
importe float,
primary key (id)
)
En esa tabla inserta 100, 500, 1000 registros, los que quieras.
El 'id' será la clave primaria, así que introduce 1,2,3,4,5,... 999,1000
El resto de campos, lo que te parezca, cualquier dato aleatorio.
Ahora crea un programita sencillo en plan rápido que haga esto:
Código Delphi
[-]var
iX , iCodigo : integer;
begin
query.close;
query.sql.text := 'update tbPruebas set nombre= :nombre, importe= :importe where id= :id';
for iX:=1 to 100000 do begin
iCodigo := random(1000); query.close;
query.params[0].asstring := inttostr(iCodigo);
query.params[1].asfloat := iCodigo;
query.params[2].asinteger := iCodigo;
query.execsql;
end;
end;
Pones 1 botón y ejecutas. No debe fallar.
Ahora abres otra instancia del programita, vamos a simular 2 usuarios trabajando.
Ejecutas y pruebas. Si no falla, puede ser que no falle si no coinciden en actualizar el mismo registro.
Ahora abres otra instancia del programita, ahora serán 3 usuarios trabajando.
Y así hasta que te aburras. A ver qué ocurre.
Cuantos más registros tengas, menos posibilidades de que toquen el mismo registro al mismo tiempo.
Cuantos menos registros tengas, más posibilidades de que seleccionen el mismo.
Cuantos más usuarios al mismo tiempo, más posibilidades de que seleccionen el mismo.
Es sólo algo didáctico, por probar.
p.d. He puesto más o menos como debe ser el código, no tengo ningún delphi/lazarus para probar.