描述
此函数返回由第一个参数指定的数据库连接上最近完成的SQL语句更改或插入或删除的数据库行数。
C / C ++语法
int sqlite3_changes(sqlite3*); |
PB语法
FUNCTION sqlite3_changes ( _ BYVAL hDbc AS DWORD _ ) AS LONG |
参数
pDb
[in]数据库连接句柄。必须是从sqlite3_open,sqlite3_open16或sqlite3_open_v2获取的NULL指针或sqlite3对象指针,而不是先前关闭。使用NULL指针参数调用sqlite3_close是无害的操作。
返回值
数字ogf更改。
备注
仅对由INSERT,UPDATE或DELETE语句直接指定的更改进行计数。由触发器或外键操作引起的辅助更改不计算在内。使用sqlite3_total_changes功能查找包括由触发器和外键操作引起的更改的总数。
由INSTEAD OF触发器模拟的视图的更改不计算在内。只计算真正的表格更改。
“行更改”是由INSERT,DELETE或UPDATE语句导致的单个表的单个行的更改。作为REPLACE约束解析,回滚,ABORT处理,DROP TABLE或任何其他机制的副作用而更改的行不会被视为直接行更改。
“触发器上下文”是一个以触发器的脚本开始和结束的执行范围。大多数SQL语句都在任何触发器之外进行评估。这是“顶级”触发上下文。如果触发器从顶级触发,则在该触发器的持续时间内输入新的触发上下文。子跟踪器在其持续时间内创建子上下文。
递归调用sqlite3_exec或sqlite3_step不会创建新的触发上下文。
此函数返回同一触发器上下文中最新的INSERT,UPDATE或DELETE语句中的直接行更改数。
因此,当从顶层调用时,此函数返回最顶层的最新INSERT,UPDATE或DELETE中的更改次数。在触发器的主体内,可以调用sqlite3_changes函数来查找同一触发器正文中最近完成的INSERT,UPDATE或DELETE语句中的更改次数。但是,返回的数字不包括由subtrigger引起的更改,因为它们具有自己的上下文。
另请参见sqlite3_total_changes接口,count_changes编译指示和变化SQL函数。
如果单独的线程在sqlite3_changes运行时在同一数据库连接上进行更改,则返回的值是不可预测的,无意义。
C ++实现代码
/*
** Return the number of changes in the most recent call to sqlite3_exec().
*/
SQLITE_API int sqlite3_changes(sqlite3 *db){
return db->nChange;
}