Subject | AW: [firebird-support] Connect/disconnect |
---|---|
Author | Steffen Heil |
Post date | 2004-09-04T15:14:20Z |
Hi
Yes. In firebird there is NOTHING outside of transactions.
So all datasets queries etc. use the active transaction (to keep their view
of data stable).
If you commit the transaction, they need to be closed (and can be opened
again).
You can also do Commit Retain, which commits data, but keeps view.
Datasets and queries should be kept open (I do not use this).
Be remember: If you keep your view (transaction), you will not see foreign
changes. So commit retain is as "no commit" for your POV, but "commit" for
POV of others.
Furthermore, using firebird (or any MGA database (is there any other?)), you
should keep transaction durations short.
Maybe use one transaction (auto commit) for data view and one transaction
for manipulating data.
for firebird).
But, when you start any query or such, your components need a transaction
and will propably recreate one for you. (As they did, when you used your
queries formerly.)
software with long-running transactions (view of data).
Regards,
Steffen
> Commiting transactions did, what I want, but I have one additionalquestion.
> Is it normal, that transaction->commit closes all opened datasets/queries?
Yes. In firebird there is NOTHING outside of transactions.
So all datasets queries etc. use the active transaction (to keep their view
of data stable).
If you commit the transaction, they need to be closed (and can be opened
again).
You can also do Commit Retain, which commits data, but keeps view.
Datasets and queries should be kept open (I do not use this).
Be remember: If you keep your view (transaction), you will not see foreign
changes. So commit retain is as "no commit" for your POV, but "commit" for
POV of others.
Furthermore, using firebird (or any MGA database (is there any other?)), you
should keep transaction durations short.
Maybe use one transaction (auto commit) for data view and one transaction
for manipulating data.
> Is there neccessary to start a new transaction each time we commit one ?I don't know, since I do not use your component libraries (I just used java
for firebird).
But, when you start any query or such, your components need a transaction
and will propably recreate one for you. (As they did, when you used your
queries formerly.)
> Is this right approach or wrong ?I leave this to someone else, since I have no experience writeing non-java
software with long-running transactions (view of data).
Regards,
Steffen