SQLite команда PRAGMA - это специальная команда, которая будет использоваться для управления различными экологическими переменными и флагами состояния в среде SQLite. Значение PRAGMA может быть прочитано, и оно также может быть установлено на основе требований.

Чтобы запросить текущее значение PRAGMA, просто укажите имя прагмы.

PRAGMA pragma_name;

Чтобы установить новое значение для PRAGMA, используйте следующий синтаксис.

PRAGMA pragma_name = value;

Режим установки может быть либо именем, либо целочисленным эквивалентом, но возвращаемое значение всегда будет целым числом.

auto_vacuum Pragma

Auto_vacuum - прагма получает или задает режим автоматического вакуума.

PRAGMA [database.]auto_vacuum;
PRAGMA [database.]auto_vacuum = mode;

Значение mode может быть любым из следующих:

Значение Описание
0 or NONE Автоматический вакуум отключен. Это режим по умолчанию, который означает, что файл базы данных никогда не будет уменьшаться по размеру, если он не будет очищен вручную с помощью команды VACUUM.
1 or FULL Автоматический вакуум включен и полностью автоматизирован, что позволяет сжимать файл базы данных при удалении данных из базы данных.
2 or INCREMENTAL Авто-вакуум включен, но должен быть активирован вручную. В этом режиме опорные данные сохраняются, но бесплатные страницы просто помещаются в свободный список. Эти страницы могут быть восстановлены с использованием incremental_vacuum pragma в любое время.

cache_size Pragma

CACHE_SIZE прагма может получить или временно установить максимальный размер кэша страниц в памяти.

PRAGMA [database.]cache_size;
PRAGMA [database.]cache_size = pages;

Значение pages представляет количество страниц в кеше. Встроенный кеш-страница имеет размер по умолчанию 2000 страниц и минимальный размер 10 страниц.

case_sensitive_like Pragma

Case_sensitive_like прагма контролирует прецедентное чувствительность встроенного LIKE выражения. По умолчанию эта прагма является ложной, что означает, что встроенный оператор LIKE игнорирует регистр букв.

PRAGMA case_sensitive_like = [true|false];

count_changes Pragma

count_changes прагма получает или задает возвращаемое значение операторов манипуляции данными, таких как INSERT, UPDATE и DELETE.

PRAGMA count_changes;
PRAGMA count_changes = [true|false];

По умолчанию эта прагма является ложной, и эти утверждения ничего не возвращают. Если установлено значение true, каждый из указанных операторов возвращает таблицу с одним столбцом и одной строкой, состоящую из одного целочисленного значения, указывающего воздействие строк на операцию.

database_list Pragma

Database_list прагма будет использоваться , чтобы вывести список всех баз данных прилагается.

PRAGMA database_list;

Эта прагма вернет таблицу из трех столбцов с одной строкой на открытую или прикрепленную базу данных, в которой будет указан порядковый номер базы данных, ее имя и связанный с ним файл.

encoding Pragma

encoding прагма контролирует , как строки кодируются и хранятся в файле базы данных.

PRAGMA encoding;
PRAGMA encoding = format;

freelist_count Pragma

Freelist_count прагма возвращает целое число,указывающее, сколько страниц базы данных в настоящее время помечаются как свободные и доступны.

PRAGMA [database.]freelist_count;

index_info Прагма

Index_info прагма возвращает информацию об индексе базы данных.

PRAGMA [database.]index_info( index_name );

Результирующий набор будет содержать одну строку для каждого столбца, содержащегося в индексе, указывающем последовательность столбцов, индекс столбца с таблицей и именем столбца.

index_list Pragma

index_list прагма перечисляет все индексы, связанные с таблицей.

PRAGMA [database.]index_list( table_name );

Результирующий набор будет содержать одну строку для каждого индекса, указывающую индексную последовательность, имя индекса и флаг, указывающий, является ли индекс уникальным или нет.

journal_mode Pragma

Journal_mode прагма получает или задает режим журнала,который контролирует, как файл журнала хранится и обрабатывается.

PRAGMA journal_mode;
PRAGMA journal_mode = mode;
PRAGMA database.journal_mode;
PRAGMA database.journal_mode = mode;

Существует пять поддерживаемых режимов журнала:

Название Описание
DELETE Это режим "по умолчанию". Здесь при завершении транзакции файл журнала удаляется.
TRUNCATE Файл журнала усекается до длины нулевых байтов.
PERSIST Файл журнала остается на месте, но заголовок перезаписывается, чтобы указать, что журнал больше недействителен.
MEMORY Запись журнала хранится в памяти, а не на диске.
OFF Запись журнала не ведется.

max_page_count Pragma

Max_page_count прагма получает или задает максимально допустимое количество страниц для базы данных.

PRAGMA [database.]max_page_count;
PRAGMA [database.]max_page_count = max_page;

page_count Pragma

PAGE_COUNT прагма возвращает в текущем количестве страниц в базе данных.

PRAGMA [database.]page_count;

page_size Pragma

PAGE_SIZE прагма получает или задает размер страницы базы данных. 

PRAGMA [database.]page_size;
PRAGMA [database.]page_size = bytes;

parser_trace Pragma

Параметр parser_trace управляет печатью состояния отладки при анализе SQL-команд.

PRAGMA parser_trace = [true|false];

По умолчанию для него установлено значение false, но когда включено, установив его в true, анализатор SQL будет печатать свое состояние, когда он анализирует команды SQL.

recursive_triggers Pragma

recursive_triggers прагма получает или задает рекурсивную функциональность триггера. Если рекурсивные триггеры не включены, действие триггера не запускает другой триггер.

PRAGMA recursive_triggers;
PRAGMA recursive_triggers = [true|false];

schema_version Прагма

Schema_version прагма получает или задает значение версии схемы, которая хранится в заголовке базы данных.

PRAGMA [database.]schema_version;
PRAGMA [database.]schema_version = number;

Это 32-разрядное знаковое целочисленное значение, которое отслеживает изменения схемы. Всякий раз, когда выполняется команда изменения схемы (например, CREATE ... или DROP ...), это значение увеличивается.

secure_delete Pragma

Secure_delete прагма используется для управления, как контент будет удален из базы данных.

PRAGMA secure_delete;
PRAGMA secure_delete = [true|false];
PRAGMA database.secure_delete;
PRAGMA database.secure_delete = [true|false];

Значение по умолчанию для флага безопасного удаления обычно отключено, но это можно изменить с помощью опции SQLITE_SECURE_DELETE.

sql_trace Pragma

Sql_trace прагма используется для вывода результатов SQL трассировки на экран.

PRAGMA sql_trace;
PRAGMA sql_trace = [true|false];

SQLite должен быть скомпилирован с помощью директивы SQLITE_DEBUG для включения этой прагмы.

synchronous Pragma

synchronous прагма получает или устанавливает текущий режим синхронизации диска, который контролирует, насколько агрессивно SQLite будет записывать данные на всем пути к физической памяти.

PRAGMA [database.]synchronous;
PRAGMA [database.]synchronous = mode;

SQLite поддерживает следующие режимы синхронизации:

Название Описание
0 or OFF Нет синхронизации вообще
1 or NORMAL Синхронизация после каждой последовательности операций с критическим диском
2 or FULL Синхронизация после каждой операции с критическим диском

temp_store Pragma

Temp_store прагма получает или задает режим хранения, используемый временных файлов базы данных.

PRAGMA temp_store;
PRAGMA temp_store = mode;

SQLite поддерживает следующие режимы хранения.

Название Описание
0 or DEFAULT Используйте параметр времени компиляции. Обычно FILE.
1 or FILE Используйте файловое хранилище.
2 or MEMORY Используйте хранилище на основе памяти.

temp_store_directory Pragma

Temp_store_directory прагма получает или задает расположение используется для временных файлов базы данных.

PRAGMA temp_store_directory;
PRAGMA temp_store_directory = 'directory_path';

user_version Pragma

User_version прагма получает или задает определенное пользователем значение версии, которая хранится в заголовке базы данных.

PRAGMA [database.]user_version;
PRAGMA [database.]user_version = number;

writable_schema Pragma

Writable_schema прагма получает или устанавливает возможность изменять системные таблицы.

PRAGMA writable_schema;
PRAGMA writable_schema = [true|false];

Если эта прагма установлена, таблицы, начинающиеся с sqlite_, могут быть созданы и изменены, включая таблицу sqlite_master. Будьте осторожны при использовании прагмы, потому что это может привести к полному повреждению базы данных.