0
私はsqliteデータベースへのシリアライズされたアクセスを持っています。すべてのスレッドが同じデータベースハンドルを使用しています。sqliteロールバックの理由は何ですか?
sqlite3_config(SQLITE_CONFIG_SERIALIZED)。多くのINSERT文を含むトランザクション文の1の間に
、私は別のスレッドで行を削除しています。どちらも同じテーブルを変更しようとしています。
トランザクションがロールバックされています。私はこれがロールバックの理由であるかどうかを知りたがっていました。
問題を見つけるのを手伝ってもらえますか?前もって感謝します。
よろしく、 ラジーブ
あなたは私たちが他のスレッドからのテーブルを変更しようとしている場合、それは矛盾した状態にして、データベースを作ることができると言うことを意味しますか? – snr
データベース自体が関連する限り(つまり、すべての制約が保証されている)、整合性のある状態になります。しかし、あなたのスレッドが同じトランザクションで複数のことをしたり、独自のトランザクションをしようとすると、あなたのプログラムでは結果が正しくない可能性があります。 –
このSQLite_CONFIG_SERIALIZEDが何を行うことができるのか教えてください。私が考えたのは、このオプションを有効にすると、同時にデータベースを更新できないということです。そして、トランザクションの開始時に、sqliteはデータベースファイルへのファイルハンドルロック権を持っていますか?次に、このオプションでどのように並列削除が可能ですか? – snr