7

こんにちは、いくつかのテーブルを保持する SQLite DB を使用する Android アプリの開発を開始しています。私が知りたいのは、特定のテーブルが最後に更新されたときです。たとえば、一部のデータは 1 週間更新する必要がないため、他のテーブルは数時間ごとに更新する必要があります。帯域幅を節約し、より高速で応答性の高いアプリを作成しようとしています。このためのコマンドがあるかどうか (何も見つからないようです)、または各テーブル内に現在の時刻と日付を含むフィールドを追加し、System.currentTimeMillis() を使用して経過時間を計算する必要があるかどうかはわかりません。

これは以下で尋ねられたことは知っていますが、答えはありませんでした。どんな助けも素晴らしいでしょう:)

SQLite データベース/テーブルが最後に更新された日時を確認する (PHP)

4

3 に答える 3

10

少し遅れましたが、何ということでしょうTRIGGER。以下に示すように、多数の をテーブルに配置して、変更テーブルを維持することもできます。最新の変更は、タイプと日付 + 時間でmodificationsテーブルに記録されます。そのような作成TRIGGERは、簡単な方法で簡単に実行でき、作成されたテーブルごとに呼び出されますSQLiteOpenHelper

CREATE TABLE table1 (
    _id INTEGER PRIMARY KEY AUTOINCREMENT,
    text1 TEXT,
    text2 TEXT
);

CREATE TABLE table2 (
    _id INTEGER PRIMARY KEY AUTOINCREMENT,
    text1 TEXT,
    int1 INTEGER
);

CREATE TABLE modifications (
    table_name TEXT NOT NULL PRIMARY KEY ON CONFLICT REPLACE,
    action TEXT NOT NULL,
    changed_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TRIGGER IF NOT EXISTS table1_ondelete AFTER DELETE ON table1
BEGIN
    INSERT INTO modifications (table_name, action) VALUES ('table1','DELETE');
END;

CREATE TRIGGER IF NOT EXISTS table2_ondelete AFTER DELETE ON table2
BEGIN
    INSERT INTO modifications (table_name, action) VALUES ('table2','DELETE');
END;

CREATE TRIGGER IF NOT EXISTS table1_onupdate AFTER UPDATE ON table1
BEGIN
    INSERT INTO modifications (table_name, action) VALUES ('table1','UPDATE');
END;

CREATE TRIGGER IF NOT EXISTS table2_onupdate AFTER UPDATE ON table2
BEGIN
    INSERT INTO modifications (table_name, action) VALUES ('table2','UPDATE');
END;

CREATE TRIGGER IF NOT EXISTS table1_oninsert AFTER INSERT ON table1
BEGIN
    INSERT INTO modifications (table_name, action) VALUES ('table1','INSERT');
END;

CREATE TRIGGER IF NOT EXISTS table2_oninsert AFTER INSERT ON table2
BEGIN
    INSERT INTO modifications (table_name, action) VALUES ('table2','INSERT');
END;
于 2012-05-11T10:45:47.613 に答える