2012-04-24 19 views

Trả lời

6

Tôi không chắc chắn về cách sử dụng SQLite để hỗ trợ dấu thời gian được sửa đổi lần cuối. Tuy nhiên, một trong các tính năng của ORMLite là trường phiên bản. Bạn có thể đánh dấu trường Date với version = true và bao giờ nó được cập nhật, nó sẽ cập nhật Date thành giá trị mới nhất. Xem tài liệu cho biết thêm thông tin:

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

Vì vậy, bạn sẽ thêm một cái gì đó như sau để lớp học của bạn:

@DatabaseField(version = true) 
Date modificationDate; 

tôi đã xác minh này hoạt động tốt cho cả việc tạo ra và sửa đổi ngày. Ngoài ra, điều này có nghĩa là khi bạn thực hiện bất kỳ nâng cấp nào, nó sẽ thêm một số thông tin như sau vào cuối câu lệnh cập nhật tự động:

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

Xem tài liệu để biết thêm thông tin. Oh, và nếu bạn muốn lưu trữ nó như là một chặng đường dài, thay vào đó bạn có thể làm điều gì đó như:

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

Chính xác những gì tôi đang tìm kiếm! Cảm ơn!! – Quentamia

3

Bạn có thể tạo một kích hoạt mà cập nhật modificatoinDate của bạn mỗi khi một chèn và cập nhật xảy ra trong SQLite.

dụ:

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

Tôi tin rằng trigger có sẵn trong cơ sở dữ liệu SQLite được sử dụng bởi Android. Tôi chưa xác minh rằng các bản cập nhật này hoạt động, nhưng đây có thể là giải pháp minh bạch.

Tôi không chắc về thời gian truy cập cuối cùng. Tôi ghét phải xem hiệu suất của việc phải cập nhật mỗi lần thực hiện lựa chọn.

+0

Đúng rồi! "where id = NEW.id" –

Các vấn đề liên quan