Yo estoy trabajando en un sistema de inventarios, donde los números consecutivos los genera la aplicación, basándome en una tabla de control. Cuando más de un cliente trata de guardar un registro nuevo, primero verifico si el número que voy a usar no está ya usado, si es así, obtengo un número nuevo y lo uso. Todo esto con un
Trigger Before Insert de la tabla.
Ahora, desde la aplicación, al momento de guardar el registro lo hago mediante un
repeat..until de esta forma:
Código Delphi
[-]
repeat
Stored := True;
try
DataSet.Post;
except
on E: EIBInterBaseError do
begin
Stored := not E.SQLCode = -901;
if Stored then raise
end
end
until
Stored;
El código no es exactamente el mismo, pero con esto resolví el problema de los DeadLock...
Espero te sirva...
Saludos...