Subject Re: [firebird-support] Is it a feature or a bug of rows versioning?
Author Doug Chamberlin
At 2/23/2004 01:25 PM (Monday), vmdd_tech wrote:
>For simplicity, at time t0, my app issues
> select name from employee where id = 11
>==> "Original name"
>
>Then, at time time t100 (several minutes later), another external app
>issues
> update employee set name = 'New name' where id = 11;
> commit;
>
>Then, at time t200 (several minutes later), my app issues
> select name from employee where id = 11
>==> "Original name"
>
>Why did my app NOT see the "New name"?

What you are seeing is the effect of a specific "Transaction Isolation"
setting which is being used. The results you are obtaining reflect a
transaction isolation setting of "repeatable read", or "snapshot". This
means that your transaction will always see the database as it was when the
transaction was started.

To achieve what you want you need to change this to a transaction isolation
setting of "read committed" which means your transaction will see the
results of all other committed transactions as soon as they are committed.

Check the documentation on the middleware you are using (JDBC or ODBC or
other) to see how to change this setting.

BTW, this is not really related to the existence of the versioning engine
at all. That's just the mechanism which is used to implement the
transaction isolation rules. If it was not that, then some other mechanism
would have to be used to achieve the same results.