Учебники

SQLite — PRAGMA

Команда 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;

Где режим может быть любым из следующих —

Sr.No. Прагма Значение и описание
1

0 или НЕТ

Авто-вакуум отключен. Это режим по умолчанию, который означает, что размер файла базы данных никогда не уменьшится, если он не будет очищен вручную с помощью команды VACUUM.

2

1 или ПОЛНЫЙ

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

3

2 или ДОПОЛНИТЕЛЬНО

Авто-вакуум включен, но должен быть активирован вручную. В этом режиме справочные данные сохраняются, но свободные страницы просто помещаются в свободный список. Эти страницы могут быть восстановлены с помощью прагмы incremental_vacuum в любое время.

0 или НЕТ

Авто-вакуум отключен. Это режим по умолчанию, который означает, что размер файла базы данных никогда не уменьшится, если он не будет очищен вручную с помощью команды VACUUM.

1 или ПОЛНЫЙ

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

2 или ДОПОЛНИТЕЛЬНО

Авто-вакуум включен, но должен быть активирован вручную. В этом режиме справочные данные сохраняются, но свободные страницы просто помещаются в свободный список. Эти страницы могут быть восстановлены с помощью прагмы incremental_vacuum в любое время.

cache_size Pragma

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

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

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

case_sensitive_like Pragma

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

PRAGMA case_sensitive_like = [true|false];

Нет способа запросить текущее состояние этой прагмы.

count_changes Pragma

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

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

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

база данных_Pragma

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

PRAGMA database_list;

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

кодировка прагма

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

PRAGMA encoding;
PRAGMA encoding = format;

Значение формата может быть одним из UTF-8, UTF-16le или UTF-16be .

freelist_count Pragma

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

PRAGMA [database.]freelist_count;

Значение формата может быть одним из UTF-8, UTF-16le или UTF-16be .

index_info Прагма

Прагма index_info возвращает информацию об индексе базы данных. Ниже приводится простой синтаксис.

PRAGMA [database.]index_info( index_name );

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

index_list Прагма

Прагма 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;

Существует пять поддерживаемых режимов журнала, перечисленных в следующей таблице.

Sr.No. Прагма Значение и описание
1

УДАЛЯТЬ

Это режим «по умолчанию». Здесь при заключении транзакции файл журнала удаляется.

2

TRUNCATE

Файл журнала усекается до длины нулевых байтов.

3

PERSIST

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

4

ОБЪЕМ ПАМЯТИ

Запись журнала хранится в памяти, а не на диске.

5

OFF

Нет записей в журнале.

УДАЛЯТЬ

Это режим «по умолчанию». Здесь при заключении транзакции файл журнала удаляется.

TRUNCATE

Файл журнала усекается до длины нулевых байтов.

PERSIST

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

ОБЪЕМ ПАМЯТИ

Запись журнала хранится в памяти, а не на диске.

OFF

Нет записей в журнале.

max_page_count Pragma

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

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

Значение по умолчанию — 1 073 741 823, что составляет одну гигастраницу, что означает, что если размер страницы по умолчанию составляет 1 КБ, это позволяет базам данных расти до одного терабайта.

page_count Pragma

Прагма page_count возвращает текущее количество страниц в базе данных. Ниже приводится простой синтаксис —

PRAGMA [database.]page_count;

Размер файла базы данных должен быть page_count * page_size.

page_size Pragma

Прагма page_size получает или устанавливает размер страниц базы данных. Ниже приводится простой синтаксис.

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

По умолчанию допустимые размеры составляют 512, 1024, 2048, 4096, 8192, 16384 и 32768 байт. Единственный способ изменить размер страницы в существующей базе данных — это установить размер страницы, а затем сразу же VACUUM базы данных.

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 Pragma

Прагма 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 для включения этой прагмы.

синхронная прагма

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

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

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

Sr.No. Прагма Значение и описание
1

0 или ВЫКЛ

Нет синхронизации вообще

2

1 или НОРМАЛЬНЫЙ

Синхронизация после каждой последовательности критических операций с диском

3

2 или ПОЛНЫЙ

Синхронизировать после каждой критической операции с диском

0 или ВЫКЛ

Нет синхронизации вообще

1 или НОРМАЛЬНЫЙ

Синхронизация после каждой последовательности критических операций с диском

2 или ПОЛНЫЙ

Синхронизировать после каждой критической операции с диском

Temp_store Pragma

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

PRAGMA temp_store;
PRAGMA temp_store = mode;

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

Sr.No. Прагма Значение и описание
1

0 или ПО УМОЛЧАНИЮ

Используйте время компиляции по умолчанию. Обычно ФАЙЛ.

2

1 или ФАЙЛ

Используйте файловое хранилище.

3

2 или ПАМЯТЬ

Используйте память на основе памяти.

0 или ПО УМОЛЧАНИЮ

Используйте время компиляции по умолчанию. Обычно ФАЙЛ.

1 или ФАЙЛ

Используйте файловое хранилище.

2 или ПАМЯТЬ

Используйте память на основе памяти.

Temp_store_directory Прагма

Прагма 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;

Это 32-разрядное целое число со знаком, которое может быть установлено разработчиком для отслеживания версий.

Writable_schema Pragma

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

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

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