int sqlite3changeset_old( sqlite3_changeset_iter * pIter,/ * Changeset迭代器* / int iVal,/ *列号* / sqlite3_value ** ppValue / * OUT:旧值(或NULL指针)* / );
传递给该功能的参数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对象,该对象包含作为更新或DELETE更改的一部分而存储的原始行值向量中的第iVal值,并返回SQLITE_OK。该函数的名称来自这样的事实,即它类似于可用于更新或删除触发器的“ old。*”列。
如果发生其他错误(例如,OOM条件),则返回SQLite错误代码,并将* ppValue设置为NULL。