![]() |
|
|||
WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
Аргументом pIter, переданным к этой функции, может быть iterator,
переданный обработчику конфликта
sqlite3changeset_apply(), или итератор, созданный
sqlite3changeset_start().
В последнем случае новое обращение к
sqlite3changeset_next()
должно вернуть SQLITE_ROW.
Если дело обстоит не так, эта функция возвращает
SQLITE_MISUSE. Аргументы pOp, pnCol и pzTab не могут быть NULL.
По возвращению три вывода установлены через эти указатели: *pOp установлен в один из
SQLITE_INSERT, SQLITE_DELETE или
SQLITE_UPDATE,
в зависимости от типа изменения, на которое в настоящее
время указывает iterator. *pnCol установлен в количество колонок в
таблице, затронутых изменением *pzTab указывает на nul-законченную utf-8 последовательность, содержащую
название таблицы, затронутой текущим изменением. Буфер остается
действительным до вызова sqlite3changeset_next()
на iterator или до возврата функции-обработчика конфликта. Если pbIndirect не NULL, *pbIndirect = true (1),
если изменение косвенное, или в false (0) иначе. См. документацию для
sqlite3session_indirect()
для описания прямых и косвенных изменений. Если никакая ошибка не происходит, SQLITE_OK возвращен.
Если ошибка происходит, код ошибки SQLite возвращен.
Значениям выходных переменных нельзя доверять в этом случае.
Choose any three.
Session Module C Interface
Получите текущую операцию из Changeset Iterator
int sqlite3changeset_op(
sqlite3_changeset_iter *pIter, /* Iterator object */
const char **pzTab, /* OUT: Pointer to table name */
int *pnCol, /* OUT: Number of columns in table */
int *pOp, /* OUT: SQLITE_INSERT, DELETE or UPDATE */
int *pbIndirect /* OUT: True for an 'indirect' change */
);