On 5 Oct 2018, at 6:17pm, Daniel Kraft <d...@domob.eu> wrote:

> If there is indeed no way to achieve my requirements with SQLite

There isn't.  I understand what you want and SQLite can't do it.

You can simulate it by introducing an extra column in each table and writing 
your own library to simulate each snapshot.  I've never seen it done.  But I 
would imagine it slows down all database operations quite a bit.

Another way to simulate it is to keep a log of each SQL command which changes 
the database in, for example, a table called "changeLog".  This needs just two 
rows: tbe normal INTEGER rowid column SQLite makes for most tables, and a TEXT 
column for the SQL command.  You also add a row to this table when the 
programmer wants to create a snapshot.

Then, to restore the database as it is at a snapshot point, just start with 
blank tables and process all commands up to the savepoint.

I've used this technique myself, and it works.  Of course, restoring to a 
savepoint can take a long time, but in my usecase this was needed very rarely.  
In this actual usecase I added another column to record which session had 
processed that SQL command.  This gave me a perfect log of who had done what.

Simon.
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to