0

ON UPDATEカスタム関数を呼び出すトリガーがテーブルにあります。カスタム関数で、現在のSAVEPOINT(最も深い未保存のもの)の名前を、テーブルの名前とタイムスタンプとともにログテーブルに挿入します。現在、テーブルの名前をハードコーディングしています(より良い方法がある場合はお知らせください)が、現在のSAVEPOINTの名前を取得する方法がわかりません。

ありがとう!

4

2 に答える 2

2

デフォルトでは、SQLiteには現在のセーブポイント(または現在のトリガーのテーブル)を取得する関数がありません。

ただし、SQLiteをアプリケーションにコンパイルした場合は、を使用sqliteInt.hして、変数からsqlite3 *db現在のセーブポイントの名前にとしてアクセスできますdb->pSavepoint->zName

于 2012-10-10T07:04:20.037 に答える
0

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の分析/準備中に渡された最後の保存ポイントの名前にアクセスできます。

于 2018-06-05T16:09:34.010 に答える