SQLITE3CHANGESET_OLD(3)

SQLITE3CHANGESET_OLD(3) | Library Functions Manual | SQLITE3CHANGESET_OLD(3)

# NAME

`sqlite3changeset_old` — obtain old.* values from a changeset iterator

# SYNOPSIS

`#include <sqlite3.h>`

int
`sqlite3changeset_old`(sqlite3_changeset_iter *pIter, int iVal, sqlite3_value **ppValue);

# DESCRIPTION

The pIter argument passed to this function may either be an iterator passed to a conflict-handler by `sqlite3changeset_apply`(), or an iterator created by `sqlite3changeset_start`(). In the latter case, the most recent call to `sqlite3changeset_next`() must have returned SQLITE_ROW. Furthermore, it may only be called if the type of change that the iterator currently points to is either SQLITE_DELETE or SQLITE_UPDATE. Otherwise, this function returns SQLITE_MISUSE and sets *ppValue to NULL.

Argument iVal must be greater than or equal to 0, and less than the number of columns in the table affected by the current change. Otherwise, SQLITE_RANGE is returned and *ppValue is set to NULL.

If successful, this function sets *ppValue to point to a protected sqlite3_value object containing the iVal'th value from the vector of original row values stored as part of the UPDATE or DELETE change and returns SQLITE_OK. The name of the function comes from the fact that this is similar to the "old.*" columns available to update or delete triggers.

If some other error occurs (e.g. an OOM condition), an SQLite error code is returned and *ppValue is set to NULL.

# IMPLEMENTATION NOTES

These declarations were extracted from the interface documentation at line 11599.

    SQLITE_API int sqlite3changeset_old(
      sqlite3_changeset_iter *pIter,  /* Changeset iterator */
      int iVal,                       /* Column number */
      sqlite3_value **ppValue         /* OUT: Old value (or NULL pointer) */
    );

# SEE ALSO

sqlite3changeset_apply(3), sqlite3changeset_next(3), sqlite3changeset_start(3), SQLITE_CREATE_INDEX(3), SQLITE_OK(3)

January 24, 2024 | NetBSD 11.0