Small. Fast. Reliable.
Choose any three.

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语句没有影响。

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