我在调用自定义函数的表上有一个触发器ON UPDATE
。在自定义函数中,我想在日志表中插入当前SAVEPOINT(最深的未保存的)的名称以及表的名称和时间戳。我目前正在硬编码表的名称(请告诉我是否有更好的方法)但我无法弄清楚如何获得当前SAVEPOINT的名称。
谢谢!
答案 0 :(得分:2)
默认情况下,SQLite没有获取当前保存点(或当前触发器表)的函数。
但是,如果您已将SQLite编译到您的应用程序中,则可以使用sqliteInt.h
,并从变量sqlite3 *db
访问当前保存点的名称db->pSavepoint->zName
。
答案 1 :(得分:0)
确定当前保存点的一种方法是,无需使用sqlite3int.h和sqlite3 * db结构,即设置编译时授权回调(http://www.sqlite.org/c3ref/set_authorizer.html),然后查找操作代码({{ 3)})SQLITE_SAVEPOINT。
传递给授权者回调的第四个参数将是保存点的名称。通过在您的结构中存储此名称,您可以访问在分析/准备sqlite3_stmt期间传入的最后保存点的名称。