我正在开发一个Android应用程序,我需要记录用户在屏幕上执行的三个最近操作。这些记录存储在SQLite数据库中。
我想实现一个特定功能,以便每当执行第四个操作时,最新记录会自动替换为新记录。
我搜索了几种限制行数的方法。其中一个是在数据库中使用触发器,我对触发器的使用不是很熟悉。
请帮我实现这项功能。
答案 0 :(得分:1)
根据你的评论,我知道3只是你说的任意数字..所以你有一个大型数据库,你想限制具有特定限制的数量
使用以下触发器
CREATE TRIGGER trg1 AFTER INSERT ON table1
WHEN (SELECT count(*) FROM table1) > 3
BEGIN
DELETE FROM table1 WHERE _id = (SELECT min(_id) FROM table1 );
END;
假设_id是标识列,它应该可以工作。
如果您不想使用_id,请使用日期时间字段来识别最旧的日志,假设在相同的毫秒级别内输入不超过1个日志 (最好使用min(_id),因为它是自动生成的增量主键)
答案 1 :(得分:0)
当您需要将系统处理卸载到数据库“服务器”时(或者如果您具有多个系统可能访问的复杂数据库约束而不是通过正确实施约束来执行此操作),数据库触发器非常有用。你真的不需要它。只需删除/插入(所有行或删除最近的行,然后插入最新的行)。你不会遇到性能问题。
除非您有业务需求将其存储在数据库中,否则看起来更像是SharedPreferences可以正常工作。