2012-04-24 7 views

Odpowiedz

6

Nie jestem pewien, jak używać SQLite do obsługi ostatnio zmodyfikowanego znacznika czasu. Jednak jedną z funkcji ORMLite jest pole wersji. Możesz oznaczyć pole Date za pomocą version = true i zawsze, gdy zostanie ono zaktualizowane, zaktualizuje ono Date do najnowszej wartości. Zobacz dokumentację uzyskać więcej informacji:

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

Więc byłoby dodać coś takiego do swojej klasie:

@DatabaseField(version = true) 
Date modificationDate; 

mam weryfikować to działa dobrze zarówno na tworzenie i daty modyfikacji. Ponadto, oznacza to, że gdy robisz żadnych ulepszeń, będzie dodać coś takiego do końca rachunku aktualizacji automagicznie:

UPDATE yourclass SET ... >>> WHERE modificationDate = existing-date; <<< 

Zobacz docs aby uzyskać więcej informacji. Aha, i jeśli chcesz, aby zapisać go jako długi, a nie można zrobić coś takiego:

@DatabaseField(version = true, dataType = DataType.DATE_LONG) 
Date modificationDate; 
+0

Dokładnie tego, czego szukałem! Dzięki!! – Quentamia

3

Można utworzyć wyzwalacz, który aktualizuje swój modificatoinDate każdorazowo wkładka i zmiana występuje w SQLite.

przykład:

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

wierzę wyzwalacze są dostępne w bazie danych sqlite używanego przez Androida. Nie sprawdziłem, czy te aktualizacje działają, ale może to być przejrzyste rozwiązanie.

Nie jestem pewien co do ostatniego czasu dostępu. Nie chciałbym widzieć wydajności konieczności aktualizacji za każdym razem, gdy wykonywany jest wybór.

+0

To wszystko! "gdzie id = NEW.id" –

Powiązane problemy