I think I see my error. I thought that the lock was promoted from read to read/write when the INSERT command was processed. At this point, SQLite knows that it is going to need to write.
Instead, although SQLite knows that it is going to have to write, it does not try to promote the lock until COMMIT. In some ways I can appreciate this: it allows other threads to finish their work. But in others it seems wrong, as if SQLite is ignoring a potential problem, in a way that may make it an even bigger problem in the future. Thanks to everyone for the responses. _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users