Subject Re: [firebird-support] Re: problem with "set transaction read committed no wait no record_version"
Author Helen Borrie
At 06:26 PM 12/10/2009, you wrote:
>> Think he want that read only the data that IS committed and "the record with id 10104 isn't already committed".
>
>That's it! I just want to read the records that are committed. I don't even want to read a VERSION of uncommitted records.

You could never read a version of an uncommitted record, except inside an uncommitted transaction that is visible to you.

Whilst a record remains uncommitted, its existence is undetermined. In future, either it will become the "latest committed version" by being committed; or it will disappear (eventually) by being rolled back.

When YOU start a transaction, your transaction will see the versions of *all* committed records as they were at the time your transaction started.

-- with Read Committed isolation, your transaction will be aware when another transaction commits a new version of a record that it is interested in. Your transaction can requery to bring that new version of the record into your application; but the new version of the record applies, even if your application is still looking at the outdated output from the previous query. If you try to update a record that has a new version, you will get a different response depending on the Record_version setting of your transaction.

-- with Snapshot isolation, your transaction does not get a view of any records that are committed after your transaction started.

There is no way to "pretend" that the latest committed version of a record does not exist; and there is no way to see or find out the values of data in new record versions that another transaction has not yet committed.

./heLen