Subject | Concurrency and transaction problem |
---|---|
Author | mmenaz@lycosmail.com |
Post date | 2001-07-11T13:11:50Z |
I'm a little ashamed of asking about that, but I thought things should
behave one way, while it's going other way, so there must be something
I've missed and I can't figure out what.
I've a program running in two PC, or, put, two instances of the
program running against the same database (for debug purpose, of
course).
The connection has a default transaction trBase with transaction
isolation to tiCommitted and autocommit to true. The login to the
database is done with the same user/password (sysdba, masterkey ;)).
Program A and program B browsing the same data in a grid. Program A
edits a record, then posts it. Program B, that since the query is not
refreshed, sees the old data value, edits the same record, then posts
it too. No errors occurs! If I refresh the query in program A I can
see the data B entered. Then I've added a transaction bar to the
program, explicitly started transaction in A program and in B program
and done as above. (commit retaining) No errors again! What's wrong?
Program B should receive a warning that in the meanwhile the data has
been changed, and it should automatically refresh the row before
stating editing, so it can see A program changes before editing. What
can I do? What are the correct setup/steps for having users edit the
same data they see in the grid?
Thanks
Marco Menardi
behave one way, while it's going other way, so there must be something
I've missed and I can't figure out what.
I've a program running in two PC, or, put, two instances of the
program running against the same database (for debug purpose, of
course).
The connection has a default transaction trBase with transaction
isolation to tiCommitted and autocommit to true. The login to the
database is done with the same user/password (sysdba, masterkey ;)).
Program A and program B browsing the same data in a grid. Program A
edits a record, then posts it. Program B, that since the query is not
refreshed, sees the old data value, edits the same record, then posts
it too. No errors occurs! If I refresh the query in program A I can
see the data B entered. Then I've added a transaction bar to the
program, explicitly started transaction in A program and in B program
and done as above. (commit retaining) No errors again! What's wrong?
Program B should receive a warning that in the meanwhile the data has
been changed, and it should automatically refresh the row before
stating editing, so it can see A program changes before editing. What
can I do? What are the correct setup/steps for having users edit the
same data they see in the grid?
Thanks
Marco Menardi