On 15 May 2016, at 4:02pm, Mikael <mikael.trash at gmail.com> wrote:

> Simon, yes using only INSERT and DELETE in total would be fine with me (and
> perhaps BEGIN and COMMIT if it's OK).
> 
> What are you thinking about?
> 
> Did you see a purely SQL-based solution that I don't?

BEGIN and COMMIT make no changes to stored data so you can ignore them for 
these purposes.

Add a "timestamp" column to your table.  When you INSERT a row, have this 
default to the current time:

, timestamp TEXT DEFAULT CURRENT_TIMESTAMP, ...

Add a "deleted" column to your table, defaulting to NIL

, deleted TEXT DEFAULT NIL, ...

When you delete or overwrite a row, instead of actually using the DELETE 
command, replace the NIL in this column with the time the row was deleted.

UPDATE myTable SET deleted=CURRENT_TIMESTAMP WHERE rowid=1234

You now have a way of tracking when each row was created and, if it has been 
deleted, when it was deleted.  Creative use of a WHERE clause in your SELECT 
commands will allow you to pick out only the rows which exist at a certain time.

If you have defined a clever primary key rather than just using a rowid, you 
will need to think through adjustments to your schema and programming 
accordingly.

Simon.

Reply via email to