3-tier ApplyUpdates(transaction) for TeamB

1 Client TClientDataSet player
2. Application Server on IBX with one default transaction. (readcommitted)
    TIBDataset player  and TProvider playerPrv

3 Local Interbase 6.0 dialect 3.

Version1.
--------client---------------       ------------appserver sql
monitor----------
player.ApplyUpdates(-1)           StartTransaction}
                                                 HardCommit     } it's
internal IBX transaction
                                                 Execute update player set
.....where ........
                                                 No updates was committed.

Version2
--------client---------------                          ----------------appse
rver sql monitor-----------
//
//  Soft=AppServer.InTransaction;
//  if Soft then
//      trans.CommitRetaining;
//  else
//     trans.StartTransaction;

Soft:=AppServer.StartTransaction;                     CommitRetaining;  (my
transaction)
try
StartTransaction; --internal IBX
  player.ApplyUpdates(-1);
                             Commit(hard);    --internal IBX
  AppServer.Commit(Soft);                                Execute:  update
player set ...where .......
except
CommitRetaining --my transaction
  AppServer.Rollback(Soft);
  raise;
end;
----------------------------------------------------------------------------
-----------------------
1.Why IBX make empty Start\Commit?
2.Is Version 2 model work good?