我想通过android在sqlite中插入一行(_id
,rank
,date
)。
但我希望每天只有一行。
因此,如果我今天选择另一个等级,它将覆盖该行,以便每天只保留最后一行
示例我插入
(rank,date) -> (3,20140322)
(rank,date) -> (5,20140322)
(rank,date) - (2,20140322)
(rank,date) - (3,20140323)
(rank,date) - (6,20140323)
我希望sqlite只是
(rank,date) - (2,20140322)
(rank,date) - (6,20140323)
如何定义日期列?以及如何每天只获得最后一个值?
答案 0 :(得分:1)
在UNIQUE
列中添加date
约束,例如:
CREATE TABLE tablename(...
date TEXT UNIQUE, ...)
然后使用INSERT OR REPLACE
进行插入,例如
INSERT OR REPLACE INTO tablename(...,date) VALUES(..., 'todaysdate')
或使用ContentValues
使用Android的便捷方法:
db.insertWithOnConflict(table, null, contentValues, SQLiteDatabase.CONFLICT_REPLACE);
当违反UNIQUE
约束(或任何其他约束)时,先删除旧的违规行,然后插入新行。