On Wed, Sep 21, 2016 at 12:02 AM, Richard Hipp <d...@sqlite.org> wrote:
> If you do a "BEGIN;" followed by a "SELECT..." then the transaction > starts before the SELECT is run. So it is serializable. > > But if you do just a "BEGIN", then some other process might jump in > line ahead of you and make some other changes to the database. Your > transaction will not be able to see those changes, due to isolation. > But they will be in the database file. Then when you got to COMMIT, > SQLite will see that your transaction is based on an historical and > out-of-date version of the database and hence will refuse to do the > commit. You'll have to ROLLBACK and try again. > > When you do "BEGIN IMMEDIATE" that reserves your spot in line and > ensures that no other transactions will commit in front of you. Does the above applies to WAL only, or the default DELETE journal mode as well? I thought only WAL did MVCC. Or am I misreading the "based on an historical and out-of-date version of the database" comment? Thanks, --DD _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users