次の SQL コマンドを使用して、Android クライアントに製品テーブルを作成します。
CREATE TABLE IF NOT EXISTS 'products' (
'_id' INTEGER PRIMARY KEY AUTOINCREMENT,
'name' TEXT,
'serverId' INTEGER,
'modifiedAt' TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE ( 'serverId' )
ON CONFLICT REPLACE );
サーバーからデータをロードしてローカル データベースに挿入するときは、コンテンツ プロバイダーで次のコマンドを使用して、行を更新するか、新しい値を挿入します。
public int bulkInsert(Uri uri, ContentValues[] values) {
final SQLiteDatabase db = mOpenHelper.getWritableDatabase();
long rowId;
int rowsAdded = 0;
for (ContentValues contentValues : values) {
int affectedRows = db.update("products", contentValues,
"serverId = ?",
new String[] { contentValues.getAsString("serverId") });
if (affectedRows == 0) {
rowId = db.insert("products", null, contentValues);
if (rowId > 0) {
rowsAdded++;
}
}
}
return rowsAdded;
}
modifiedAt列を除いて、新しい値が存在する場合、すべての列が更新されます。
注: 一括コマンドはトランザクションにラップされます。質問を簡単にするためにコードを省略しました。
質問:
更新が発生するたびにmodifiedAt列のタイムスタンプを更新するにはどうすればよいですか?