SQLite C 接口
中断长时间运行的查询
void sqlite3_interrupt(sqlite3*);
此函数会导致任何挂起的数据库操作中止并尽早返回。此例程通常被调用以响应用户操作,例如在用户希望长时间查询操作立即停止时按下“取消”或 Ctrl-C。
从与当前运行数据库操作的线程不同的线程调用此例程是安全的。但是使用已关闭或可能在 sqlite3_interrupt() 返回之前关闭的数据库连接调用此例程是不安全的。
如果在调用 sqlite3_interrupt() 时 SQL 操作非常接近完成,那么它可能没有机会被中断,可能会继续完成。
被中断的 SQL 操作将返回SQLITE_INTERRUPT。如果中断的 SQL 操作是显式事务内的 INSERT、UPDATE 或 DELETE,则整个事务将自动回滚。
sqlite3_interrupt(D) 调用一直有效,直到数据库连接D 上所有当前运行的 SQL 语句完成。在 sqlite3_interrupt() 调用之后和运行语句计数达到零之前启动的任何新 SQL 语句都会被中断,就好像它们在 sqlite3_interrupt() 调用之前已经运行一样。在运行语句计数为零后启动的新 SQL 语句不受 sqlite3_interrupt() 的影响。在没有正在运行的 SQL 语句时发生的对 sqlite3_interrupt(D) 的调用是空操作,并且对在 sqlite3_interrupt() 调用返回后启动的 SQL 语句没有影响。