如何限制Android SQLite表中的行数

Gil*_*lad 22 sqlite android

我创建了一个具有"最新历史"的Android应用.我想将此表的大小限制为最多50行(根据其插入日期).

我看到几个线程讨论限制已删除行的数量,但我不确定这个功能是否在Android的SQLite中启用.

有人可以帮忙吗?

谢谢

paw*_*eba 21

创建一个触发器

CREATE TRIGGER delete_till_50 INSERT ON _table WHEN (select count(*) from _table)>50 
BEGIN
    DELETE FROM _table WHERE _table._id IN  (SELECT _table._id FROM _table ORDER BY _table._id limit (select count(*) -50 from _table ));
END;
Run Code Online (Sandbox Code Playgroud)

编辑:

你可以改变
DELETE FROM ... WHERE ... IN ...
,以
DELETE FROM ... WHERE ... NOT IN ...
作为魔RISIN写道.我不知道对于大表的性能差异,使用INNOT IN,但对你的问题是没有区别.


Moj*_*sin 15

我认为sql无法管理表中的行数,因此您必须自己管理它.您可以在数据插入后执行查询,这将减少数据 - 这样的事情应该工作

DELETE FROM table where _id NOT IN (SELECT _id from table ORDER BY insertion_date DESC LIMIT 50)
Run Code Online (Sandbox Code Playgroud)