在使用ORMLite和Android时,是否有一种简单的方法可以添加上次修改的时间戳?

时间:2012-04-24 15:57:59

标签: android sqlite ormlite

我想添加一个字段,指示我的对象的上次修改时间或上次访问时间。这样做是否有一种简单,自动刷新的方法?

2 个答案:

答案 0 :(得分:6)

我不确定如何使用SQLite来支持上次修改的时间戳。但是,ORMLite的一个功能是版本字段。您可以使用Date标记version = true字段,并且一旦更新它就会将Date更新为最新值。有关更多信息,请参阅文档:

  

http://ormlite.com/docs/version-field

所以你要在课堂上添加以下内容:

@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数据库中提供了触发器。我还没有验证这些更新是否有效,但这可能是一个透明的解决方案。

我不确定上次访问时间。我不想看到每次执行选择时都必须进行更新的性能。