Obtain old.* Values From A Changeset Iterator
获取来自Changeset Iterator的old.*值
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。