这似乎应该很容易找到,但我不会在任何地方看到它。如果我打开一个sqlite连接并开始一个事务而没有通过调用sqlite3_busy_timeout
来指定超时,那么使用什么默认值?或者这会以某种方式导致未定义的行为?这种方法的documentation不能说。
我的特定用例是与iOS捆绑在一起的版本,但我猜测答案在不同平台上几乎相同。
答案 0 :(得分:7)
如果未设置sqlite3_busy_timeout()
和sqlite3_busy_handler()
且作者处于有效状态,则step()
会立即返回SQLITE_BUSY
。
注意:在某些情况下会返回SQLITE_IOERR_BLOCKED
另见:Register A Callback To Handle SQLITE_BUSY Errors在第二段中陈述
如果忙碌回叫为
NULL
,则在遇到锁定时会立即立即返回SQLITE_BUSY
或SQLITE_IOERR_BLOCKED
。如果忙回调不是NULL
,则可以使用两个参数调用回调。