Can you please double-check the following to make sure it's accurate? I've read the "File Locking and Concurrency" page and I'm trying to verify how SQLite works in the following scenario:
There is a single table (bar) with a single column (foo) with a single row containing the integer value "1". Two processes (A and B) have opened the database in READWRITE mode. They both try to atomically increment the value at the same time. What happens? 1) [Process A] BEGIN TRANSACTION 2) [Process B] BEGIN TRANSACTION 3) [A] SELECT foo FROM bar (A acquires a SHARED lock) 4) [B] SELECT foo FROM bar (B acquires a SHARED lock) 5) [A] UPDATE bar SET foo=2 (A acquires the RESERVED lock) 6) [B] UPDATE bar SET foo=2 (? query fails, B's transaction aborted, SHARED lock released?) 7) [A] COMMIT (A gets the EXCLUSIVE lock, writes, clears the lock) Is this right? In particular, in (6) does B's query fail because there is already a RESERVED lock held by A? Or is there some other system that notices B's conflicting transaction and aborts it? Or do I completely misunderstand this, and do both transactions succeed (leaving the value as "2" rather than "3")? Just trying to sort this all out in my head. Thanks! -david _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users