int sqlite3_total_changes(sqlite3*); sqlite3_int64 sqlite3_total_changes64(sqlite3*);
这些函数返回自数据库连接打开以来,所有 INSERT、UPDATE 或 DELETE 语句完成的插入、修改或删除的行总数,包括作为触发器程序的一部分执行的语句。这两个函数除了返回值类型和如果连接修改的行数超过了“int”类型支持的最大值,则 sqlite3_total_changes() 的返回值未定义之外,其他方面完全相同。执行任何其他类型的 SQL 语句都不会影响 sqlite3_total_changes() 返回的值。
作为 外键操作 部分进行的更改包含在计数中,但作为 REPLACE 约束解析部分进行的更改不包含在内。对由 INSTEAD OF 触发器拦截的视图的更改不会被统计。
sqlite3_total_changes(D) 接口仅报告对数据库连接 D 执行的 SQL 语句导致的行数更改。忽略来自其他数据库连接的任何更改。要检测来自其他数据库连接对数据库文件的更改,请使用 PRAGMA data_version 命令或 SQLITE_FCNTL_DATA_VERSION 文件控制。
如果一个单独的线程在 sqlite3_total_changes() 运行时对同一个数据库连接进行了更改,则返回的值是不可预测的,也没有意义。
另请参阅