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