我想添加一个字段,指示我的对象的上次修改时间或上次访问时间。这样做是否有一种简单,自动刷新的方法?
答案 0 :(得分:6)
我不确定如何使用SQLite来支持上次修改的时间戳。但是,ORMLite的一个功能是版本字段。您可以使用Date
标记version = true
字段,并且一旦更新它就会将Date
更新为最新值。有关更多信息,请参阅文档:
所以你要在课堂上添加以下内容:
@DatabaseField(version = true)
Date modificationDate;
我已经证实这适用于创建和修改日期。此外,这意味着当您进行任何升级时,它会自动将以下内容添加到更新语句的末尾:
UPDATE yourclass SET ... >>> WHERE modificationDate = existing-date; <<<
有关详细信息,请参阅文档。哦,如果你想把它存放很长时间,你可以做类似的事情:
@DatabaseField(version = true, dataType = DataType.DATE_LONG)
Date modificationDate;
答案 1 :(得分:3)
每次在sqlite中进行插入和更新时,您都可以创建一个更新modificatoinDate的触发器。
示例:
db.execSQL("create trigger updateModDate " +
"after insert on MY_TABLE for each row begin " +
"update MY_TABLE set modificationDate = date('now') where id = NEW.id " +
"end;");
db.execSQL("create trigger updateModDate " +
"after update on MY_TABLE for each row begin " +
"update MY_TABLE set modificationDate = date('now') where id = NEW.id " +
"end;");
我相信Android使用的sqlite数据库中提供了触发器。我还没有验证这些更新是否有效,但这可能是一个透明的解决方案。
我不确定上次访问时间。我不想看到每次执行选择时都必须进行更新的性能。