2013-07-09 173 views
0

需要在非常大的數據庫中保持行的運行計數。行計數在我的程序中需要足夠的時間來運行Count(*)太慢,所以我將繼續運行計數以在SQLITE中解決此問題。Sqlite觸發器受影響的行數

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支持這一點。

是否有任何聲明Sqlite認識到持有INSERT和DELETE查詢影響的行數量?

回答

1

的SQLite有changes() SQL function,但像sqlite3_changes() API函數,它報告的最後完成聲明的行數。 在觸發器執行期間,觸發語句尚未完成。

只需使用一個FOR EACH ROW觸發器,併爲每行添加1。

+0

正是我在找什麼,閱讀那個頁面,不知何故第一次忽略了它。謝謝 –