Android 如何限制给定表的记录总数?

Android 如何限制给定表的记录总数?,android,sqlite,android-sqlite,Android,Sqlite,Android Sqlite,我正在使用sqlite3作为android应用程序的缓存工具 基本上,服务以固定的间隔从服务器获取数据,并将新记录插入sqlite3表中。然后,数据用于填充活动和片段内的UI 因为数据是短期的,所以不需要长期保存 为了节省空间和资源,我如何确保只保留100条最新记录,并自动删除较旧的条目 我听说过触发器,但不太确定如何实现它们。任何提示都将不胜感激。请按照以下步骤操作 select entry_id from entries order by create_date desc limit 1 o

我正在使用sqlite3作为android应用程序的缓存工具

基本上,服务以固定的间隔从服务器获取数据,并将新记录插入sqlite3表中。然后,数据用于填充活动和片段内的UI

因为数据是短期的,所以不需要长期保存

为了节省空间和资源,我如何确保只保留100条最新记录,并自动删除较旧的条目

我听说过触发器,但不太确定如何实现它们。任何提示都将不胜感激。

请按照以下步骤操作

select entry_id
from entries
order by create_date desc
limit 1 offset 100;


delete from entries where create_date < 
    (select create_date from entries where entry_id = obtained_entry_id);
1) 在表“timestamp”中添加一列

2) 在插入记录期间,以毫秒为单位设置当前时间的“时间戳”

3) 像这样创建触发器

CREATE TRIGGER yourtriggername AFTER INSERT 
ON yourtable WHEN (SELECT COUNT(*) FROM yourtable) >100
BEGIN
DELETE FROM yourtable WHERE timestamp = (SELECT MIN(timestamp) FROM yourtable)
END
4) 用实际表名替换“yourtable”


5) 每次都会调用上述触发器,并检查表中的总记录是否超过100。它将删除“时间戳”最小的记录。

可能重复感谢您的回答。删除条目的命令非常清楚,但如何确保在插入后自动执行该命令?
CREATE TRIGGER truncate_entries AFTER INSERT ON entries 
  BEGIN
    --the delete statement from above
  END;
CREATE TRIGGER yourtriggername AFTER INSERT 
ON yourtable WHEN (SELECT COUNT(*) FROM yourtable) >100
BEGIN
DELETE FROM yourtable WHERE timestamp = (SELECT MIN(timestamp) FROM yourtable)
END