Способы разблокировки базы данных SQLite, когда к ней обращается другая программа? - PullRequest
0 голосов
/ 29 ноября 2010

Я использую sqlite3 в Linux, и в настоящее время у меня есть проблема.У меня есть база данных и 2 таблицы: db1 и db2.У db1 есть 3 столбца: empID, empName, empAddr.У db2 только 1 столбец: empID, и его значение по умолчанию установлено на 0.

Я создал программу на C, которая непрерывно опрашивает 2-ю базу данных db2 на предмет любых изменений в значении empID.В зависимости от нового значения empID в db2, программа извлекает соответствующую информацию из db1.Например, если значение empID в db2 изменено на 1, программа ищет информацию (empName и empAddr) из db1, которая соответствует empID, равному 1. Однако, когда я запускаю 2 терминала: 1 для изменения значения вручнуюempID в db2 и еще 1 для запуска программы на C, я столкнулся с проблемой заблокированной базы данных.Пока программа работает и обращается к базе данных, я хочу изменить значение empID в db2, но я понимаю, что, поскольку моя C-программа обращается к ней, я не могу обновить значение empID (если я не закрою терминал, на котором запущена программа).Итак, мой вопрос, есть ли способ обновить / изменить значение empID в db2, когда я обращаюсь к db2 через мою программу?Ответы будут с благодарностью.Спасибо.

1 Ответ

0 голосов
/ 29 ноября 2010

sqlite имеет единый механизм блокировки - заблокируйте весь файл .sq3!

Вы можете установить прагму для чтения в незафиксированном виде в программе "select" sqlite docs

Однако использование базы данных для отправки сообщения похоже на использование сарая для отправки письма.

...