2012-04-24 44 views

回答

6

我不確定如何使用SQLite來支持最後修改的時間戳。但是,ORMLite的其中一個功能是版本字段。您可以用version = true標記Date字段,每次更新時它都會將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; 
+0

正是我在找的東西!謝謝!! – Quentamia 2012-04-24 18:59:37

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數據庫可用。我尚未驗證這些更新是否有效,但這可能是一個透明的解決方案。

我不確定上次訪問時間。我討厭看到每次執行選擇時都必須執行更新的性能。

+0

就是這樣! 「where id = NEW.id」 – 2016-03-08 23:38:39

相關問題