5

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

4

2 回答 2

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; <<<

有关更多信息,请参阅文档。哦,如果您想将其存储为 long,则可以执行以下操作:

@DatabaseField(version = true, dataType = DataType.DATE_LONG)
Date modificationDate;
于 2012-04-24T16:04:02.390 回答
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 数据库中可用。我尚未验证这些更新是否有效,但这可能是一个透明的解决方案。

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

于 2012-04-24T16:44:46.087 回答