我想在SQLite中实现一个存储多达100条记录的表。
我正在寻找的行为是表存储记录,当它已满并添加新记录时,它会删除最旧的记录并写入新记录。
我正在阅读SQLite文档,但我找不到我想要的内容。
有什么想法吗?
编辑:对不起,我忘了解释一些重要的事情。每条记录都有一个ID AUTOINCREMENT字段。这就是我知道哪些记录是先写的。我真的无法想出如何只存储100条记录的解决方案。
答案 0 :(得分:2)
对于小型表格,建议您不要指定键,因此默认情况下它会在rowid上编入索引。
因此rowid定义了添加记录的顺序。
添加的每一行:
@Override
public void onOffsetChanged(AppBarLayout appBarLayout, int offset)
{
if (offset == 0)
{
// Fully expanded
}
else
{
// Not fully expanded or collapsed
}
}
并删除它!
简单本身。
即
SELECT rowid FROM TheTable limit 1;
因此,对于在前端添加的每条记录,您将删除后端的第一条记录。
对于具有一个或多个索引的表,只需忽略它们并使用rowid进行排序。
delete from TheTable where rowid in (SELECT rowid FROM TheTable limit 1);
回答这个问题后,我可以使用这种技术来改变我自己的项目,以限制“最近使用的”文件列表中的文件数量。
答案 1 :(得分:1)
这是个坏主意。 最好存储所有数据,最多只获得100个
select * from tblmessage order by datefield DSC limit 100
触发器的好主意)
CREATE TRIGGER triggername AFTER INSERT ON tablename
BEGIN
delete from tblmessage where
datefield =(select min(datefield) from tblmessage )
and (select count(*) from tblmessage )=100;
END;