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
I thought only WAL did MVCC. Or am I misreading the "based on an historical
out-of-date version of the database" comment? Thanks, --DD
sqlite-users mailing list

Reply via email to