0

非常に大規模なデータベースで実行中の行数を維持する必要があります。私のプログラムでは、Count(*) の実行が遅すぎるほど Row Count が必要なので、SQLITE でこれを回避するために count を実行し続けます。

CREATE TRIGGER RowCountUpdate AFTER INSERT ON LastSample
        BEGIN
        UPDATE BufferControl SET NumberOfSamples = NumberOfSamples + 
        (SELECT Count(*) FROM Inserted);
        END;

したがって、ここから現在の行数 (NumberOfSamples) を取得し、挿入によって影響を受けた行数を増やします (DELETE とデクリメントでも同じことを行います)。Sqlite の C API では、これは Sqlite3_Changes() で行われます。ただし、このスクリプトではその関数を使用できません。私は周りを見回して、一部が SELECT Count(*) FROM Inserted を使用しているのを見ましたが、Sqlite がそれをサポートしているとは思いません。

INSERT および DELETE クエリの影響を受けた行の量を保持する Sqlite が認識するステートメントはありますか?

4

1 に答える 1

1

SQLite にはchanges() SQL 関数sqlite3_changes()がありますが、 API 関数と同様に、最後に完了したステートメントの行数を報告します。トリガーの実行中、トリガー文はまだ完了していません。

FOR EACH ROWトリガーを使用して、行ごとに 1 を追加するだけです。

于 2013-07-09T19:30:34.757 に答える