0

Linuxでsqlite3を使用していますが、現在問題があります。データベースとその中に2つのテーブルdb1とdb2があります。db1には、empID、empName、empAddrの3つの列があります。db2には1つの列しかありません:empIDであり、その値はデフォルトで0に設定されています。

empIDの値の変更について、2番目のデータベースdb2を継続的にポーリングするCプログラムを作成しました。db2のempIDの新しい値に応じて、プログラムはdb1から対応する情報をフェッチします。たとえば、db2のempIDの値が1に変更された場合、プログラムは1に等しいempIDに対応するdb1からの情報(empNameおよびempAddr)を検索します。 db2のempIDとCプログラムを実行するための別の1の場合、データベースがロックされるという問題が発生しました。プログラムの実行中にデータベースにアクセスしているときに、db2のempIDの値を変更したいのですが、Cプログラムがアクセスしているため、empIDの値を更新できないことを理解しています(プログラムを実行しているターミナルを閉じない限り)。だから私の質問は、プログラムを介してdb2にアクセスしているときに、db2のempIDの値を更新/変更する方法はありますか?回答をいただければ幸いです。ありがとうございました。

4

1 に答える 1

0

sqlite には単一のロック メカニズムがあります。つまり、.sq3 ファイル全体をロックします。

「選択」プログラムの sqliteドキュメントで、コミットされていない読み取り用のプラグマを設定できます

ただし、データベースを使用してメッセージを送信することは、納屋を使用して手紙を送るようなものです。

于 2010-11-29T04:53:52.667 に答える