"Wei Chin" <[EMAIL PROTECTED]> writes: > As I try this with SQLITE 3.0.4, I get "database is locked" error at > step 4. > > Are you not getting the lock out error?
Yes, because there is a transaction in progress in Process 2, the database may not be written to by Process 1, so without a busy-wait-time value specified, the INSERT query at step 4 will return a BUSY error. If you have a busy-wait-timeout (handler) specified, step 4 will wait until after the transaction is ended in step 5, and then the INSERT at step 4 will proceed i.e. although it's the command is issued at time 4, it wont actually be executed until time 6 -- assuming the busy-wait handler waits that long for the database to be unlocked. > > [EMAIL PROTECTED] wrote on 9/1/2004, 10:04 AM: > > > Time Process 1 Process 2 > > --------------------------------------------------------------- > > 1 INSERT INTO t1 > > VALUES (1, 'one'); > > > > 2 INSERT INTO t2 > > VALUES ('hello', 'world'); > > > > 3 BEGIN; > > SELECT * FROM t2; > > > > 4 INSERT INTO t1 > > VALUES (2, 'two'); > > > > 5 SELECT * FROM t1; > > END TRANSACTION;