Minoru
похоже, я разобрался. У меня в одном потоке была транзакция, которая сначала делала SELECT, а потом UPDATE. В другом потоке в это же время в цикле происходили INSERT (в эту же таблицу). SQLITE_LOCKED я получал при попытке выполнить UPDATE. Ну и, собственно, проблема в том, что пока первый поток читает таблицу, второй успевает в неё что-то добавить, и при попытке апгрейда транзакции до записи (это делает UPDATE) я получаю ошибку, т.к. кто-то уже успел обновить таблицу и мой UPDATE уже не имеет смысла, т.к. действует над старой версией данных