Sqlite参考手册
C界面 | C Interface
Count The Number Of Rows Modified
int sqlite3_changes(sqlite3*);
此函数返回由唯一参数指定的数据库连接上最近完成的 INSERT,UPDATE 或 DELETE 语句修改,插入或删除的行数。执行任何其他类型的 SQL 语句不会修改此函数返回的值。
只考虑由 INSERT,UPDATE 或 DELETE 语句直接进行的更改 - 由触发器,外键操作或 REPLACE 约束解析引起的辅助更改不计入在内。
对由 INSTEAD OF 触发器拦截的视图所做的更改不计算在内。sqlite3_changes() 立即在 INSERT,UPDATE 或 DELETE 语句在视图上运行后返回的值始终为零。只计算对实际表格所做的更改。
如果在触发程序运行时执行 sqlite3_changes() 函数,情况会更加复杂。如果程序使用 changes() SQL 函数,或者某个其他回调函数直接调用 sqlite3_changes() ,则可能会发生这种情况。主要有:
- 在进入触发器程序之前,保存 sqlite3_changes() 函数返回的值。触发程序结束后,恢复原始值。
- 在一个触发器程序中,每个 INSERT,UPDATE 和 DELETE 语句都会在正常完成时设置 sqlite3_changes() 返回的值。当然,这个值不会包含子触发器所做的任何更改,因为 sqlite3_changes() 值将在每个子触发器运行后被保存和恢复。
这意味着,如果 change() SQL 函数(或类似)由触发器中的第一个 INSERT,UPDATE 或 DELETE 语句使用,它会在调用语句开始执行时返回设置的值。如果触发器程序中的第二个或随后的此类语句使用了它,则返回值将反映同一触发器中先前的 INSERT,UPDATE 或 DELETE 语句修改的行数。
另请参阅 sqlite3_total_changes() 接口,count_changes pragma 和 changes() SQL 函数。
如果一个单独的线程在 sqlite3_changes() 运行时对相同的数据库连接进行更改,则返回的值是不可预测的,并且没有意义。
另请参见对象,常量和函数的列表。
SQLite is in the Public Domain.
C界面 | C Interface相关
SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来
主页 | https://sqlite.org/ |
源码 | https://www.sqlite.org/src/ |
发布版本 | 3.21.0 |