在线文档教程
Sqlite
C界面 | C Interface

Interrupt A Long-Running Query

中断长时间运行的查询

void sqlite3_interrupt(sqlite3*

此函数会导致任何暂挂的数据库操作中止并尽早返回。通常在响应用户操作(例如按下“取消”或Ctrl-C)时调用此例程,用户想要立即停止长查询操作。

从与当前正在运行数据库操作的线程不同的线程调用此例程是安全的。但是,在sqlite3_interrupt()返回之前关闭或可能关闭的数据库连接调用此例程是不安全的。

如果在调用sqlite3_interrupt()时SQL操作几乎完成,那么它可能没有机会被中断并可能继续完成。

被中断的SQL操作将返回SQLITE_INTERRUPT。如果中断的SQL操作是显式事务中的INSERT,UPDATE或DELETE,则整个事务将自动回滚。

在数据库连接D上的所有当前正在运行的SQL语句完成之前,sqlite3_interrupt(D)调用有效。任何在sqlite3_interrupt()调用之后和运行语句到达零之前启动的新SQL语句都会中断,就好像它们在sqlite3_interrupt()调用之前一直运行一样。运行语句计数到零后启动的新SQL语句不受sqlite3_interrupt()的影响。对没有运行SQL语句时发生的sqlite3_interrupt(D)调用是无操作并且对sqlite3_interrupt()调用返回后启动的SQL语句没有影响。