![]() |
|
|||
WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
Получите changeset, содержащий изменения таблиц, приложенных к объекту
сессии, переданному как первый аргумент. Если успешно, установит
*ppChangeset, чтобы указать на буфер, содержащий changeset, а *pnChangeset
к размеру changeset в байтах прежде, чем возвратить SQLITE_OK.
Если ошибка происходит, установит *ppChangeset и *pnChangeset в 0
и возвращает код ошибки SQLite. changeset состоит из ноля или большего количества изменений INSERT,
UPDATE и/или DELETE, каждый представляющий изменение единственной строки
приложенной таблицы. Изменение INSERT содержит значения каждой области новой
строки базы данных. DELETE содержит исходные значения каждой области
удаленной строки базы данных. Изменение UPDATE содержит исходные значения
каждой области обновленной строки базы данных
с обновленными значениями для каждой обновленной колонки непервичного ключа.
Для изменения UPDATE невозможно представлять изменение, которое изменяет
значения колонок первичного ключа. Если такое изменение внесено, оно
представляется в changeset как DELETE, сопровождаемый INSERT. Изменения не зарегистрированы для строк, которым сохранили NULL
в одну или больше их колонок PRIMARY KEY. Если такая строка
вставлена или удалена, никакое соответствующее изменение не присутствует в
changeset, возвращенном этой функцией. Если существующая строка
с одним или более NULL, сохраненными в колонках PRIMARY KEY, обновляется так,
чтобы всеми колонками PRIMARY KEY был не-NULL, только INSERT, появляется в
changeset. Точно так же, если существующая строка со значениями не-NULL,
PRIMARY KEY, обновляется так, чтобы одна или больше колонок PRIMARY KEY были
установлены в NULL, получающийся changeset содержит
только изменение DELETE. Содержание changeset может быть пересечено, используя iterator, созданный
использованием sqlite3changeset_start()
API. changeset может быть применен к базе данных с совместимой схемой,
используя sqlite3changeset_apply()
API. В changeset, произведенном этой функцией, группируются все изменения,
связанные с единственной таблицей. Другими словами, повторяя через changeset
или применяя changeset к базе данных, все изменения, связанные с единственной
таблицей, обрабатываются перед прохождением дальше к следующей таблице.
Таблицы приведены в порядок в том же самом порядке, в котором они были
приложены к объекту. Порядок, в котором, сохранены изменения, связанные с
единственной таблицей, не определен. После успешного вызова этой функции, ответственность вызывающего
в конечном счете освобождить буфер, который указывает на *ppChangeset,
использованием sqlite3_free().
Choose any three.
Session Module C Interface
Произведите Changeset от объекта сессии
int sqlite3session_changeset
(
sqlite3_session *pSession, /* Session object */
int *pnChangeset, /* OUT: Size of buffer at *ppChangeset */
void **ppChangeset /* OUT: Buffer containing changeset */
);