![]() |
|
|||
WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
sqlite3_update_hook() регистрирует функцию обратного вызова в
соединении с базой данных, определенном первым
аргументом, которая будет вызвана каждый раз, когда строка
обновлена, вставлена или удалена в таблице rowid
. Любой отзыв, установленный предыдущим запросом к этой функции для того
же самого соединения с базой данных, отвергнут. Второй аргумент это указатель на функцию, чтобы вызвать, когда строка
обновлена, вставлена или удалена в таблице rowid.
Первый аргумент отзыва это копия третьего аргумента sqlite3_update_hook().
Второй аргумент отзыва один из
SQLITE_INSERT,
SQLITE_DELETE или
SQLITE_UPDATE,
в зависимости от операции, которая заставила отзыв быть вызванным.
Третий и четвертый аргументы отзыва содержат указатели на имя базы данных
и имя таблицы, содержащей затронутую строку. Заключительный параметр отзыва
rowid строки.
В случае обновления это rowid
после того, как обновление произойдет. Перехватчик обновления не вызван, когда внутренние системные таблицы
изменяются (то есть sqlite_sequence). Перехватчик обновления не вызван, когда
меняются таблицы WITHOUT ROWID. В текущем внедрении не вызван перехватчик обновления, когда противоречивые
строки удалены из-за
ON CONFLICT REPLACE. И при этом перехватчик
обновления не вызван, когда строки удалены, используя
truncate optimization.
Исключения, определенные в этом параграфе, могли бы измениться в
будущем выпуске SQLite. Перехватчик обновления не должен делать ничего, что изменит соединение с
базой данных, которое его вызвало. Любые действия, чтобы изменить соединение
с базой данных должны быть отсрочены до окончания завершения
sqlite3_step(), который вызвал обьновление.
Обратите внимание на то, что sqlite3_prepare_v2()
и sqlite3_step()
изменяют их соединения с базой данных. sqlite3_update_hook(D,C,P) вернет P
от предыдущего запроса к тому же самому
соединению с базой данных D или NULL
для первого запроса D. См. также sqlite3_commit_hook(),
sqlite3_rollback_hook() и
sqlite3_preupdate_hook().
Choose any three.
SQLite C Interface
Отзывы уведомления об изменении данных
void *sqlite3_update_hook(sqlite3*, void(*)(void *,int ,char const *,
char const *,sqlite3_int64), void*);