0

SQLite ドキュメントによると、バージョン 3.7.0 の時点で、再帰トリガーはデフォルトで有効になっているはずです。ただし、バージョン 3.8.8.3 を使用して (具体的には NuGet の System.Data.SQLite コアを使用して) データベースへの接続を開き、プラグマを確認すると、それらは '0' またはオフに設定されており、確かにそうではありません。再帰的に発火します。

3.8.2 を使用するオープン ソース ツール Sqlite ブラウザーなどでデータベースを開くと、プラグマがオフに設定されていることが示されます。UI でそれらを有効にすることはできますが、データベースを閉じてから再度開くとすぐに、それらは再びオフになります。なんてこと?

「PRAGMA RECURSIVE_TRIGGERS = 1;」を追加してみました。一部のオンライン ドキュメントでは動作するはずですが、もちろん動作しません。

SQLiteConnectionStringBuilder も調べましたが、バイナリ GUID などの他のプラグマ関連のものへの参照はありますが、再帰トリガーへの参照はなく、これには接続文字列を使用できないとさらに信じています。

簡単に言えば、これは私たちのアプリケーションを壊しています。データの整合性のために再帰トリガーに依存しています。

私たちの唯一の解決策は、アプリがプラグマを追加するために使用しているすべての SQL クエリを手動で編集することです。

それで...再帰トリガーがデフォルトで有効にされていない理由を理解するのを手伝ってくれる人はいますか?

4

1 に答える 1