Small. Fast. Reliable.
Choose any three.

SQLite C接口

计算修改的行数

int sqlite3_changes(sqlite3 *);

此函数返回由only参数指定的数据库连接上最近完成的INSERT,UPDATE或DELETE语句修改,插入或删除的行数。执行任何其他类型的SQL语句都不会修改此函数返回的值。

仅考虑由INSERT,UPDATE或DELETE语句直接进行的更改-不计算由触发器外键操作REPLACE约束解析引起的辅助更改。

INSTEAD OF触发器拦截的视图更改 不计算在内。在视图上运行INSERT,UPDATE或DELETE语句后,sqlite3_changes()返回的值始终为零。仅计算对实际表所做的更改。

如果在运行触发器程序的同时执行sqlite3_changes()函数,则事情会更加复杂。如果程序使用changes()SQL函数,或者某些其他回调函数直接调用sqlite3_changes(),则可能会发生这种情况。本质上:

这意味着,如果触发器中的第一个INSERT,UPDATE或DELETE语句使用changes()SQL函数(或类似函数),则它将返回调用语句开始执行时设置的值。如果它被触发器程序中的第二个或后续此类语句使用,则返回的值将反映由同一触发器中的上一个INSERT,UPDATE或DELETE语句修改的行数。

如果在运行sqlite3_changes()时,一个单独的线程在同一数据库连接上进行了更改,则返回的值是不可预测的,并且没有意义。

也可以看看:

另请参见 对象常量函数的列表