Subject Re: [IBO] IBOQuery with record locking
Author earnesttse
If turn off LockWait, in this case, I will get error: ISC ERROR
CODE:335544569; ISC ERROR MESSAGE:Dynamic SQL Error, SQL error code=-
504, Invalid cursor reference, Cursor is not open.

It seems the IBOQuery of other user knows that the record was locked.

My problem is that if one user edited a detail record of first master
record and don't commit yet, there is no other user can open the
query of detail table.

I tried to use [EMS InterBase & FireBird Manager 3] to veiw the data
which edited and posted in a transcation (before commit or rollback),
I can see the old verson of the record without error.

Thanks for help!

Earnest


--- In IBObjects@yahoogroups.com, "Jason Wharton" <supportlist@...>
wrote:
>
>
> Turn LockWait off.
>
> This should not be used in an interactive GUI application.
>
> The transactions will isolate everything fine without LockWait.
>
> Jason Wharton
>
> > -----Original Message-----
> > From: IBObjects@yahoogroups.com [mailto:IBObjects@yahoogroups.com]
On
> > Behalf Of earnesttse
> > Sent: Wednesday, March 19, 2008 8:18 PM
> > To: IBObjects@yahoogroups.com
> > Subject: Re: [IBO] IBOQuery with record locking
> >
> >
> > Dear Helen,
> >
> > Thanks for detail explain!
> >
> > My problem is that when a detail was edited and posted in a
> > Transaction, the second user still can't to read "latest
commited"
> > version of the record. When LockWait=True, the application of
second
> > user will be hold to wait the transaction of first user to commit
or
> > rollback; when LockWait=False, the application of second user
will
> > raise record locking error.
> >
> > I want to allow another user can read the record which was edited
and
> > posted in a uncompleted transaction without waiting or error.
> >
> > Thanks for help!
> >
> > Earnest
> >
> > --- In IBObjects@yahoogroups.com, Helen Borrie <helebor@> wrote:
> > >
> > > At 01:00 PM 20/03/2008, you wrote:
> > > >Hello, I have a record locking problem needing your help!
> > >
> > > I am using Delphi 2007, IBO 4.8.7, IBOQuery,
AutoCommit=True,
> > > Isolation=tiCommitted.
> > >
> > >
> > > >I have master/detail tables to record sale invoice. I call
> > > >IB_Database.StatTransaction before editing master reocrd. When
one
> > > >user is editing a record of detial, other user can't read the
> > edited
> > > >record, system will wait until the record has been cancelled
or
> > > >posted.
> > >
> > > Transactions cannot see work that other transactions are
doing.
> > Fb/IB do not support "dirty read" so, even when the first
transaction
> > (A) posts the work that results from an Edit, other transactions
will
> > not see those changes. If the other transactions are viewing the
> > table with ReadCommitted isolation, they will see the changes of
> > Transaction A only after Transaction A has committed. If
Transaction
> > A does not commit, but rolls back instead, other transactions
will
> > NEVER see those changes.
> > >
> > > Whilst TrxA is reading the record (XYZ), other records can read
> > the "latest committed" version of that record.
> > > --- during Editing, nothing changes on the database side
> > > --- at Post, the dataset sends a DML statement to the server.
If
> > no other transactions already have uncommitted changes posted for
> > that record, Trx A gets the lock. Other transactions can still
see
> > the latest committed version, as before, but none will be allowed
to
> > post changes to that record.
> > >
> > > If TrxA actually INSERTs the record in question, it does not
exist
> > for other transactions to see until that INSERT is committed by
> > TrxA. If it is true that you have other users that cannot see
ANY
> > version of record XYZ while TrxA is Editing it, then the reason
will
> > be that TrxA itself inserted the record.
> > >
> > > >Is there any way to allow the second user to view the edited
> > record
>