在SQLite

时间:2015-08-04 07:55:47

标签: sqlite

我想在SQLite中实现一个存储多达100条记录的表。

我正在寻找的行为是表存储记录,当它已满并添加新记录时,它会删除最旧的记录并写入新记录。

我正在阅读SQLite文档,但我找不到我想要的内容。

有什么想法吗?

编辑:对不起,我忘了解释一些重要的事情。每条记录都有一个ID AUTOINCREMENT字段。这就是我知道哪些记录是先写的。

我真的无法想出如何只存储100条记录的解决方案。

2 个答案:

答案 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;
相关问题