I took a slightly different approach and used a trigger. This is the create table function from my event log class. The string handler is proprietary but other than that there should be enough there to give you an idea.
void DbEventLog::CreateTable(sqlite3* pDatabase) { // create the table and insert the record char* db_err; CmnNarrowString createQuery = "create table tbl_EventLog ("; createQuery += "m_key integer primary key autoincrement, "; createQuery += "m_eventCode integer, "; createQuery += "m_timestamp integer, "; createQuery += ");"; int rc = sqlite3_exec(pDatabase, createQuery.c_str(), NULL, 0, &db_err); if ( rc != SQLITE_OK ) { // TODO - log error } else { // create the index on the unique id used for queries from ics createQuery = "create index idx_EventLog on tbl_EventLog (m_key)"; rc = sqlite3_exec(pDatabase, createQuery.c_str(), NULL, 0, &db_err); if ( rc != SQLITE_OK ) { // TODO - log error } else { createQuery = "create trigger trg_EventLog after insert on tbl_EventLog begin delete from tbl_EventLog where m_key <= (SELECT max(m_key) FROM tbl_EventLog) - 4000; end;"; rc = sqlite3_exec(pDatabase, createQuery.c_str(), NULL, 0, &db_err); if ( rc != SQLITE_OK ) { // TODO - log the error } } } } _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users