Buen día.
Tengo el siguiente código donde valido una transacción con un campo llave numérico, en caso de error realizo un rollback de la transacción y el campo llave lo aumento e inicio la transacción, el guarda el registro pero igual me tira el error de que la transacción no se podía realizar por error en llave y esa es la transacción que se debería cancelar con el rollback.
Código Delphi
[-]
Conexion.StartTransaction;
try
iErrors := Squema.ApplyUpdates(0);
if iErrors = 0 then
begin
for x := 0 to Squema .Count - 1 do
if Squema .DataSets[x].UpdatesPending then
begin
Squema .DataSets[x].CommitUpdates;
Conexion.Commit; end;
end
else
begin
Conexion.Rollback;
end;
except
on e: Exception do
begin
Conexion.Rollback;
raise;
end;
end;
Que error tengo en el código o que me falta para que cancele correctamente la transacción, uso un TFDConnection, TFDQuery, TDSchemaAdapter. La parte donde realizo el aumento de la llave numérica es en el evento OnError del TFDQuery.
Gracias de antemano.