勇芳软件工作室.汉化:  SQLite3 API Functions > Database Connection >

sqlite3_changes

Previous pageReturn to chapter overviewNext page

描述

 

此函数返回由第一个参数指定的数据库连接上最近完成的SQL语句更改或插入或删除的数据库行数。

 

C / C ++语法

 

int sqlite3_changes(sqlite3*);

 

PB语法

 

FUNCTION sqlite3_changes ( _

BYVAL hDbc AS DWORD _

) AS LONG

 

参数

 

pDb

 

[in]数据库连接句柄。必须是从sqlite3_opensqlite3_open16sqlite3_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_execsqlite3_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;

}