Subject Re: [firebird-support] How can I use a DirtyRead Isolation with Firebird?
Author Radu Sky
thecrgrt wrote:
> I've locked the some rocords in my application by using explicit lock and it
> is no problem, but I would like to know who was locked this those records?
> so I kept user information into some fields on locked rocords, but other
> transactions cannot see this value, I know this transaction is not committed
> it seems DirtyRead is needed for this.
>
> I've used dbExpress with Delphi to write this application and I've tried to
> specified a DirtyRead(ReadUncommitted) isolation for starting a transaction
> but there is no effect, for specificed this value with a connection It's work,
> but I need to use this isolation with transaction level not a connection level
> because of all transaction depenced on this connection is also toke a
> ReadUncommitted effect, how can I do?

Hi,

No can do, Firebird doesn't support DirtyReads.

or Which other way to do this?

It might be possible if you use a separate lock table and post data in
the lock table (id, user, transaction etc) in a separate transaction and
commit it after lock and use a BeforeCommit event for your main
transaction to clean the lock table for previously inserted data.
We use a similar technique to handle concurrent updates (but without the
autocommit).

HTH

Radu