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.
//Conexion --> TFDConnection //Squema --> TDSchemaAdapter // 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; //09/12/2015 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.