ON UPDATE
カスタム関数を呼び出すトリガーがテーブルにあります。カスタム関数で、現在のSAVEPOINT(最も深い未保存のもの)の名前を、テーブルの名前とタイムスタンプとともにログテーブルに挿入します。現在、テーブルの名前をハードコーディングしています(より良い方法がある場合はお知らせください)が、現在のSAVEPOINTの名前を取得する方法がわかりません。
ありがとう!
ON UPDATE
カスタム関数を呼び出すトリガーがテーブルにあります。カスタム関数で、現在のSAVEPOINT(最も深い未保存のもの)の名前を、テーブルの名前とタイムスタンプとともにログテーブルに挿入します。現在、テーブルの名前をハードコーディングしています(より良い方法がある場合はお知らせください)が、現在のSAVEPOINTの名前を取得する方法がわかりません。
ありがとう!
デフォルトでは、SQLiteには現在のセーブポイント(または現在のトリガーのテーブル)を取得する関数がありません。
ただし、SQLiteをアプリケーションにコンパイルした場合は、を使用sqliteInt.h
して、変数からsqlite3 *db
現在のセーブポイントの名前にとしてアクセスできますdb->pSavepoint->zName
。
sqlite3int.hとsqlite3*db構造を使用せずに、現在のセーブポイントを決定する1つの方法は、コンパイル時の承認コールバック(http://www.sqlite.org/c3ref/set_authorizer.html)を設定してから確認することです。 SQLITE_SAVEPOINTのアクションコード(http://www.sqlite.org/c3ref/c_alter_table.html )の場合。
承認者コールバックに渡される4番目のパラメーターは、セーブポイントの名前になります。この名前を構造に保存することで、sqlite3_stmtの分析/準備中に渡された最後の保存ポイントの名前にアクセスできます。