Subject | Re: [firebird-support] Re: problem with "set transaction read committed no wait no record_version" |
---|---|
Author | Helen Borrie |
Post date | 2009-10-12T09:37:11Z |
At 06:26 PM 12/10/2009, you wrote:
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
>> Think he want that read only the data that IS committed and "the record with id 10104 isn't already committed".You could never read a version of an uncommitted record, except inside an uncommitted transaction that is visible to you.
>
>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.
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