Чтение незафиксированных изменений из базы данных SQLite - PullRequest
4 голосов
/ 10 сентября 2011

Я написал приложение (используя Qt в C ++), которое вставляет данные в базу данных SQLite.Другое приложение считывает данные из той же базы данных, но я заметил, что невозможно прочитать незафиксированные данные.Вместо этого я хотел бы иметь возможность читать данные, даже если они еще не зафиксированы.

Читая документацию по SQLite, я нашел прагму read_uncommitted, которая, насколько я понимаю, должна быть именно тем, что мне нужно.Проблема в том, что, даже если я установлю это значение true, я не смогу получить незафиксированные данные.

Я попытался запустить свое приложение, которое выполняет процесс вставки, и одновременно запустить клиент sqlite3.Я устанавливаю для прагмы значение true и пытаюсь посчитать записи внутри таблицы.Я всегда получаю 0 (база данных была пуста до начала процесса вставки), пока не завершится весь процесс, где я сразу получу все данные.

Я что-то не так делаю?Разве эта прагма не заставляет клиента sqlite3 вести себя по-другому?

1 Ответ

5 голосов
/ 14 сентября 2011

Я отвечаю себе: нет, кажется, это невозможно. Режим изоляции read_uncommitted требует включения общего кэша, что в настоящее время возможно только для разных потоков, живущих в одном и том же процессе. Это лучшее место для изучения: http://www.sqlite.org/sharedcache.html.

...