Al wrote:
> 
> I'm using sqlite to implement a fast logging system in an embbeded system. For
> mainly space but also performance reason, I need to rotate the databases.
> 
> The database is queried regularly and I need to keep at least $min rows in 
> it. 
> 
> What I plan, is inside my logging loop, to do something like this.
> 
> while(1) {
>     read_informations_from_several_sources();
>     INSERT(informations);
> 
>     if(count > max) {
>        /* I want to move all oldest rows in another database */ 
>        BEGIN;
>        INSERT INTO logs_backup
>             SELECT * FROM logs order by rowid limit ($max - $min);
> 
>        DELETE FROM logs WHERE rowid IN (SELECT rowid FROM logs ORDER BY rowid
>             LIMIT ($max - $min));
>        COMMIT;
>     }
> }
> 
> rowid is an autoincremented field.
> I am not an sql expert, and would like to find the fastest solution to move 
> the
> oldest rows into another database. Am I doing silly things ? Can it be 
> improved ?
> 

Al,

There have been a few past discussions of using SQLite to create a FIFO 
table with a fixed maximum size. See 
http://www.nabble.com/limiting-table-size--to2035232.html#a2063150 for 
one way to do this. You would have to modify the insert trigger to make 
the backup copy of the old row before it is deleted.

HTH
Dennis Cote
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to