如何在SQLite中找到当前SAVEPOINT的名称?

时间:2012-10-10 04:52:16

标签: sqlite transactions

我在调用自定义函数的表上有一个触发器ON UPDATE。在自定义函数中,我想在日志表中插入当前SAVEPOINT(最深的未保存的)的名称以及表的名称和时间戳。我目前正在硬编码表的名称(请告诉我是否有更好的方法)但我无法弄清楚如何获得当前SAVEPOINT的名称。

谢谢!

2 个答案:

答案 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期间传入的最后保存点的名称。