sqlite 如何限制某个表中的数据总数

1、定期执行:

DELETE FROM table where _id NOT IN (SELECT _id from table ORDER BY insertion_date DESC LIMIT 50)


 

2、或者建立一个trigger:

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;

2.1解释:

a.触发条件:

        INSERT ON _table WHEN (select count(*) from _table)>50 

        插入表时看下总条数是否大于50,如果大于50则出发。

b.删除数据

        DELETE FROM _table WHERE _table._id IN  (SELECT _table._id FROM _table ORDER BY _table._id limit (select count(*) -50 from _table ));

        1.找出要删除的id:DELETE FROM _table WHERE _table._id IN  

        2.从时间最早的开始删除,只保存最近的50条:限定查询数量,limit (select count(*) -50 from _table )。对id进行排序,当然也可以用时间排序。

参考:sqlite 如何限制某个表中的数据总数_love_android_2011的专栏-CSDN博客

Guess you like

Origin blog.csdn.net/u013584315/article/details/120364918