If you used an INTEGER PRIMARY KEY AUTOINCREMENT could you use a simple trigger 
and a modulus of the newly inserted rowid?

e.g. for a dimension of 10:

CREATE TABLE ring_buffer (key INTEGER PRIMARY KEY AUTOINCREMENT, stuff TEXT);
CREATE TRIGGER delete_tail AFTER INSERT ON ring_buffer
BEGIN
  DELETE FROM ring_buffer WHERE key=NEW.key%10 AND key!=NEW.key;
END;
INSERT INTO ring_buffer (stuff) VALUES('Stuff 1');
INSERT INTO ring_buffer (stuff) VALUES('Stuff 2');
INSERT INTO ring_buffer (stuff) VALUES('Stuff 3');
INSERT INTO ring_buffer (stuff) VALUES('Stuff 4');
INSERT INTO ring_buffer (stuff) VALUES('Stuff 5');
INSERT INTO ring_buffer (stuff) VALUES('Stuff 6');
INSERT INTO ring_buffer (stuff) VALUES('Stuff 7');
INSERT INTO ring_buffer (stuff) VALUES('Stuff 8');
INSERT INTO ring_buffer (stuff) VALUES('Stuff 9');
INSERT INTO ring_buffer (stuff) VALUES('Stuff 10');
INSERT INTO ring_buffer (stuff) VALUES('Stuff 11');
INSERT INTO ring_buffer (stuff) VALUES('Stuff 12');
INSERT INTO ring_buffer (stuff) VALUES('Stuff 13');
INSERT INTO ring_buffer (stuff) VALUES('Stuff 14');
SELECT * FROM ring_buffer;

5|Stuff 5
6|Stuff 6
7|Stuff 7
8|Stuff 8
9|Stuff 9
10|Stuff 10
11|Stuff 11
12|Stuff 12
13|Stuff 13
14|Stuff 14

> Hi,
> I would like to implement a log table with a finite 
> dimension, for exemple a 
> table with 500 records, and when the last record is set in 
> the table I would 
> like to come back at the first tuplet and write over the 
> previous value 
> recorded. I think it's the way SQLite journal is implmented.
> Is there any way to declare this table with these properties 
> included, so I 
> don't have to add code to do this function?
> Thanks
> 
> Julien
> 
> ----------------------------
> Julien LEFORT
> Com2gether
> 16, Allée de la verte vallée
> 14000 CAEN
> tel : +33 2 31 15 61 42
> fax : +33 2 31 53 76 14
> 

Reply via email to