int sqlite3changeset_old( sqlite3_changeset_iter *pIter, /* Changeset iterator */ int iVal, /* Column number */ sqlite3_value **ppValue /* OUT: Old value (or NULL pointer) */ );
传递给此函数的 pIter 参数可以是传递给冲突处理程序的迭代器,由 sqlite3changeset_apply() 传递,也可以是通过 sqlite3changeset_start() 创建的迭代器。在后一种情况下,对 sqlite3changeset_next() 的最近一次调用必须返回 SQLITE_ROW。此外,只有当迭代器当前指向的变更类型是 SQLITE_DELETE 或 SQLITE_UPDATE 时才能调用它。否则,此函数返回 SQLITE_MISUSE 并将 *ppValue 设置为 NULL。
参数 iVal 必须大于或等于 0,小于受当前变更影响的表的列数。否则,将返回 SQLITE_RANGE 并且 *ppValue 将被设置为 NULL。
如果成功,此函数将 *ppValue 设置为指向一个受保护的 sqlite3_value 对象,该对象包含存储为 UPDATE 或 DELETE 变更一部分的原始行值向量中的第 iVal 个值,并返回 SQLITE_OK。函数名称来自以下事实:这类似于可用于更新或删除触发器的“old.*”列。
如果发生其他错误(例如 OOM 条件),则返回 SQLite 错误代码,并且 *ppValue 将被设置为 NULL。