Please help my understand what will happen in the following cases involving 
transactions. System: Delphi XE2, Firebird 2,5x, Using DBX components.  
Isolation level: ReadCommitted.

 

 The actual statements are much more complex and involves various statements in 
the transaction and/or triggers that updates/insert into up to 8 tables.
 

 Case 1
 App 1 starts a transaction (T1) and in an After Insert trigger for MasterTable 
do something like:

 Update TableSub set X = X + MasterTable.X where Y=Y.MasterTable
 Before App1 commits, App2 starts a transtaction (T2) and  does the same 
statement.  Then App1 commits(T1) and then App2 commits(T2).  
 Will this result in a deadlock or will T1 "run" and then T2 or will X.old in 
both transaction have the same value?
 

 Case 2
 Same case as above but the trigger use X = GEN_ID(Generator1,1).  
 Will X be, for example 10, in T1 and 11 in T2, or will it result in a 
deadlock, or will X be 10 in both transactions?
 

 Any information will be appreciated and even more so hints as on how to handle 
this.  I would like T1 to start and run to completion and then T2 taking into 
account what happen in T1.
 

 Kind Regards
 

 

 Cornie van Schoor
 InfoStar Software
 South Africa
 

 

 

 

Reply via email to