Is it wrong to think that coming from the BDE where I used no explicit Interbase Transactions - that I can just be sure to set AutoCommit on all my TIBCQuery's and be ok with transactions?
I'm seeing some weird locks occuring when 2 programs are running accessing the same DB. When the 2nd app does an Update and then the program closes, the 1st app has problems seeing the committed transaction. If the 1st program tries to update that same the record, I get: Deadlock, update conflicts with concurrent update.
Also, if this makes any difference, I am using the "Classic Firebird" mode because I have 2 processors and SuperServer mode didn't run well. (Is there any known problems with Classic mode?
Thanks,
Rhett
BDE to IBDAC - Transactions
This problems are caused by transaction isolation level, in InterBase and IBDAC by default it is Snapshot. The snapshot transaction can't edit records that were edited and even committed after transaction started. The solution is to use transaction with "Read Committed" isolation level.
If you are using Delphi6 or higher then you can do this by accessing IBCConnection.DefaultTransaction.Params property in Object Inspector and setting "Read Committed" Transaction Kind.
If you use Delphi 5 then you should use additional IBCTransaction component, set up it with "Read Committed" isolation level and link to IBCConnection.DefaultTransaction
If you are using Delphi6 or higher then you can do this by accessing IBCConnection.DefaultTransaction.Params property in Object Inspector and setting "Read Committed" Transaction Kind.
If you use Delphi 5 then you should use additional IBCTransaction component, set up it with "Read Committed" isolation level and link to IBCConnection.DefaultTransaction