RussianLDP Рейтинг@Mail.ru
WebMoney: 
WMZ Z294115950220 
WMR R409981405661 
WME E134003968233 
Visa 
4274 3200 2453 6495 

Small. Fast. Reliable.
Choose any three.

SQLite C Interface

Виртуальные параметры конфигурации таблицы

#define SQLITE_VTAB_CONSTRAINT_SUPPORT 1
#define SQLITE_VTAB_INNOCUOUS          2
#define SQLITE_VTAB_DIRECTONLY         3
#define SQLITE_VTAB_USES_ALL_SCHEMAS   4

Этот макрос определяет различные варианты sqlite3_vtab_config(), который можно использовать, чтобы настроить и оптимизировать виртуальную таблицу.

SQLITE_VTAB_CONSTRAINT_SUPPORT
Вызов формы sqlite3_vtab_config (db,SQLITE_VTAB_CONSTRAINT_SUPPORT,X) поддерживается, где X целое число. Если X ноль, то виртуальная таблица, чей метод xCreate или xConnect вызвал sqlite3_vtab_config(), не поддерживает ограничения. В этой конфигурации (которая является умолчанием), если запрос xUpdate вернет SQLITE_CONSTRAINT, то все запросы отменены, как будто OR ABORT был определен как часть пользовательского SQL-оператора, независимо от фактического ON CONFLICT.

Если X будет отличным от нуля, то виртуальное внедрение таблицы гарантирует, что, если xUpdate вернет SQLITE_CONSTRAINT, это сделает так, прежде чем любые модификации к внутренним или персистентным структурам данных были сделаны. Если ON CONFLICT = ABORT, FAIL, IGNORE или ROLLBACK, SQLite в состоянии отменить запрос или транзакцию базы данных, и оставить или продолжить обрабатывать текущий SQL-оператор. Если ON CONFLICT = REPLACE и xUpdate вернет SQLITE_CONSTRAINT, SQLite обращается с этим, как будто ON CONFLICT был ABORT.

Виртуальные таблицы, которые требуются, чтобы обращаться с OR REPLACE, должны сделать это в рамках метода xUpdate. Если запрос sqlite3_vtab_on_conflict() указывает, что текущая политика ON CONFLICT = REPLACE, виртуальная таблица должна тихо заменить соответствующие строки в отзыве xUpdate и вернуть SQLITE_OK. Или, если это невозможно, это может возвратить SQLITE_CONSTRAINT, в этом случае SQLite отступает к ограничительной обработке OR ABORT.

SQLITE_VTAB_DIRECTONLY
Вызов формы sqlite3_vtab_config (db,SQLITE_VTAB_DIRECTONLY) из методов xConnect или xCreate виртуальной таблицы мешает использовать таблицу из триггеров и обзоров.

SQLITE_VTAB_INNOCUOUS
Вызов формы sqlite3_vtab_config (db,SQLITE_VTAB_INNOCUOUS) из методов xConnect или xCreate виртуальной таблицы определяют, что виртуальная таблица безопасно использовать из триггеров и обзоров. Концептуально, признак SQLITE_VTAB_INNOCUOUS означает, что виртуальная таблица не может причинить серьезный вред, даже если этим управляет злонамеренный хакер. Разработчики должны избежать устанавливать флаг SQLITE_VTAB_INNOCUOUS, если это не абсолютно необходимо.

SQLITE_VTAB_USES_ALL_SCHEMAS
Вызов формы sqlite3_vtab_config (db,SQLITE_VTAB_USES_ALL_SCHEMA) из методов the xConnect или xCreate виртуальной таблицы приказывают планировщику запроса начинать, по крайней мере, транзакцию чтения на всех схемах ("main", "temp" и любая ATTACH-БД) каждый раз, когда виртуальная таблица используется.