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 结构的情况下确定当前保存点的一种方法是设置编译时授权回调(http://www.sqlite.org/c3ref/set_authorizer.html)然后查看对于 SQLITE_SAVEPOINT 的操作代码 ( http://www.sqlite.org/c3ref/c_alter_table.html )。

传递给授权回调的第四个参数将是保存点的名称。通过将此名称存储在您的结构中 - 您将可以访问在分析/准备您的 sqlite3_stmt 期间传入的最后一个保存点的名称。

于 2018-06-05T16:09:34.010 回答