我创建了下一个表:
final String SQL_CREATE_TABLE_NEWS_TAPE = "CREATE TABLE " + NewsTapeEntry.TABLE_NAME +
" (" + NewsTapeEntry.NEWS_ID + " INTEGER PRIMARY KEY, " +
NewsTapeEntry.USER_ID + " INTEGER NOT NULL, " +
NewsTapeEntry.CONTENT + " TEXT, " +
NewsTapeEntry.CREATED_AT + " TEXT, " +
" FOREIGN KEY (" + NewsTapeEntry.NEWS_ID + ") REFERENCES " +
NewsTapeEntry.TABLE_NAME + " (" + NewsTapeEntry.NEWS_ID + "), " +
" UNIQUE (" + NewsTapeEntry.NEWS_ID + ") ON CONFLICT UPDATE);";
但如果我更新myNews,则每次都插入此表中的每一行... 我需要下一个结果:当它更新时 - 冷却检查当前ID是否存在,如果为true - 更新表中的当前行,如果为false - make insert! 但是有一点是必须要做的:如果ID存在,并且行更新,则不能用默认值覆盖空字段。例如: 我正在更新myNews,我收到现有NEWS_ID的答案,但在这个答案中不包含字段CREATED_AT。因此,在更新行字段后,CREATED_AT必须是先前的(未更新,不会被默认值替换)。
任何解决方案都会很高兴!
更新
当我收到新数据时,我正在做bulckIncert:
getContentResolver().bulkInsert(Contract.NewsTapeEntry.CONTENT_URI, mCvArray);