Sqlite触发器受影响的行数

时间:2013-07-09 18:02:50

标签: database sqlite triggers

需要在非常大的数据库中保持行数。在我的程序中,行计数需要足够的次数才能运行Count(*)太慢,所以我将继续运行计数以在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 个答案:

答案 0 :(得分:1)

SQLite具有changes() SQL function,但与sqlite3_changes() API函数类似,它会报告上一个已完成语句的行数。 在触发器执行期间,触发语句尚未完成。

只需使用FOR EACH ROW触发器,每行添加1个。