![]() |
|
|||
WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
Добавьте все изменения в changeset (или patchset) в буфере pData
(размеом nData байт) к changegroup. Если буфер содержит patchset, то все предшествующие обращения
к этой функции на том же самом объекте changegroup, должно быть, также
определили patchsets. Или, если буфер содержит changeset, должны быть
более ранние обращения к этой функции. Иначе SQLITE_ERROR возвращен, и
никакие изменения не добавляются к changegroup. Строки в changeset и changegroup определяются значениями в их колонках
PRIMARY KEY. Изменение в changeset, как полагают, относится к той же самой
строке, как изменение, уже существующее в changegroup, если у этих двух
строк есть тот же самый первичный ключ. Изменения строк, которые уже не появляются в changegroup, просто
копируются в него. Или, если новый changeset и changegroup содержат
изменения, которые относятся к единственной строке, заключительное содержание
changegroup зависит от типа каждого изменения, следующим образом: Если новый changeset содержит изменения, которые уже присутствуют в
changegroup, то количество колонок и положение колонок первичного ключа для
таблицы должны быть последовательными. Если дело обстоит не так, эта функция
терпит неудачу с SQLITE_SCHEMA. Кроме того, если объект changegroup
формировался со схемой базы данных, используя
sqlite3changegroup_schema() API, возможно объединить changeset с различными
числами колонок для единственной таблицы
при условии, что они в других отношениях совместимы. Во всех случаях, если ошибка происходит, статус
заключительного содержания changegroup не определен.
Если никакая ошибка не происходит, SQLITE_OK возвращен. Если вход changeset, кажется, поврежден, SQLITE_CORRUPT возвращен. Или,
если переполнение памяти происходит во время обработки, эта функция
возвращает SQLITE_NOMEM.
Choose any three.
Session Module C Interface
Добавьте Changeset к Changegroup
int sqlite3changegroup_add(sqlite3_changegroup*, int nData, void *pData);
Существующее изменение
Новое изменение
Изменение на выходе
INSERT INSERT
Новое изменение проигнорировано. Этот случай не происходит, если новый
changeset был немедленно зарегистрирован после changesets,
уже добавленного к changegroup.
INSERT UPDATE Изменение INSERT остается в changegroup.
Значения в изменении INSERT изменяются, как будто строка
была вставлена существующим изменением и затем обновлена
согласно новому изменению.
INSERT DELETE
Существующий INSERT удален из changegroup. DELETE не добавляется.
UPDATE INSERT
Новое изменение проигнорировано. Этот случай не происходит, если новый
changeset был немедленно зарегистрирован после changeset,
уже добавленного к changegroup.
UPDATE UPDATE
Существующий UPDATE остается в changegroup. Это исправлено так, чтобы
сопровождающие значения состояли в том, как будто строка
была обновлена однажды существующим изменением, а затем
еще и новым изменением.
UPDATE DELETE
Существующий UPDATE заменяется новым DELETE в changegroup.
DELETE INSERT
Если одно или больше значений столбцов в строке, вставленной
новым изменением, отличаются от таких же в строке,
удаленной существующим изменением, существующий DELETE заменяется UPDATE в
changegroup. Иначе, если вставленная строка это
точно то же самое как удаленная, от существующего DELETE просто отказываются.
DELETE UPDATE
Новое изменение проигнорировано. Этот случай не происходит, если новый
changeset был немедленно зарегистрирован после changeset,
уже добавленного к changegroup.
DELETE DELETE
Новое изменение проигнорировано. Этот случай не происходит, если новый
changeset был немедленно зарегистрирован после changeset,
добавленного к changegroup.