On Apr 16, 2012, at 5:51 PM, Simon Slavin wrote: > > On 16 Apr 2012, at 11:25pm, Puneet Kishor <punk.k...@gmail.com> wrote: > >> I absolutely don't get any of the above. Why is "keeping the data" worse >> than keeping the commands? I am not even sure what is a command vs. what is >> a data. A SQL command has data embedded in it. I mean, if I have >> >> UPDATE t >> SET name = 'foo', val = 3.1415 >> WHERE id = 22; >> >> which part was the command and which part was the data? > > The command is the three rows above. Imagine you'd passed that command to > _exec(). So as well as executing that command you write it to a file > somewhere: > > logid timestamp command > 163742 2347634.133 UPDATE t SET name = 'foo', val = 3.1415 WHERE > id = 22; > > In terms of the data, I'm not sure whether you're keeping copies of the > entire row, or just triplets. If you're keeping a copy of the row every time > the row changes then you would need to store > > logid timestamp tablename id name val col3 col4 > col5 ... > 213876 2347634.133 t 22 foo 3.1415 6 > fred x ... > > if instead you are storing triplets then you would need to store two rows of > data > > logid timestamp tablename id column value > 824724 2347634.133 t 22 name foo > 824725 2347634.133 t 22 val 3.1415
all that is fine, but how does that solve my problem? So, I want to find out row 22 "AS OF", to use Oracle's Total Recall functionality (thanks PA), at a time before the update happened. How do I do that? This just seems way too elaborate with no gains toward the capability I desire. Maybe I am missing something. -- Puneet Kishor _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users