SQLite - PRAGMA

SQLite PRAGMALa commande est une commande spéciale à utiliser pour contrôler diverses variables d'environnement et indicateurs d'état dans l'environnement SQLite. Une valeur PRAGMA peut être lue et elle peut également être définie en fonction des exigences.

Syntaxe

Pour interroger la valeur PRAGMA actuelle, indiquez simplement le nom du pragma.

PRAGMA pragma_name;

Pour définir une nouvelle valeur pour PRAGMA, utilisez la syntaxe suivante.

PRAGMA pragma_name = value;

Le mode défini peut être soit le nom, soit l'équivalent entier, mais la valeur renvoyée sera toujours un entier.

auto_vacuum Pragma

le auto_vacuumpragma obtient ou définit le mode d'aspiration automatique. Voici la syntaxe simple.

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

mode peut être l'un des suivants -

N ° Sr. Valeur et description de Pragma
1

0 or NONE

Le vide automatique est désactivé. Il s'agit du mode par défaut, ce qui signifie qu'un fichier de base de données ne diminuera jamais de taille à moins qu'il ne soit aspiré manuellement à l'aide de la commande VACUUM.

2

1 or FULL

Le vide automatique est activé et entièrement automatique, ce qui permet à un fichier de base de données de se réduire lorsque les données sont supprimées de la base de données.

3

2 or INCREMENTAL

Le vide automatique est activé mais doit être activé manuellement. Dans ce mode, les données de référence sont conservées, mais les pages libres sont simplement mises sur la liste libre. Ces pages peuvent être récupérées à l'aide duincremental_vacuum pragma à tout moment.

cache_size Pragma

le cache_sizepragma peut obtenir ou définir temporairement la taille maximale du cache de pages en mémoire. Voici la syntaxe simple.

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

le pagesvalue représente le nombre de pages dans le cache. Le cache de pages intégré a une taille par défaut de 2 000 pages et une taille minimale de 10 pages.

case_sensitive_like Pragma

le case_sensitive_likepragma contrôle la sensibilité à la casse de l'expression LIKE intégrée. Par défaut, ce pragma est faux, ce qui signifie que l'opérateur LIKE intégré ignore la casse des lettres. Voici la syntaxe simple.

PRAGMA case_sensitive_like = [true|false];

Il n'existe aucun moyen de demander l'état actuel de ce pragma.

count_changes Pragma

count_changespragma obtient ou définit la valeur de retour des instructions de manipulation de données telles que INSERT, UPDATE et DELETE. Voici la syntaxe simple.

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

Par défaut, ce pragma est faux et ces instructions ne renvoient rien. Si elle est définie sur true, chacune des instructions mentionnées renverra une table à une colonne et à une ligne composée d'une seule valeur entière indiquant les lignes concernées par l'opération.

database_list Pragma

le database_listpragma sera utilisé pour lister toutes les bases de données attachées. Voici la syntaxe simple.

PRAGMA database_list;

Ce pragma renverra une table à trois colonnes avec une ligne par base de données ouverte ou attachée donnant le numéro de séquence de la base de données, son nom et le fichier associé.

encodage Pragma

le encodingpragma contrôle la manière dont les chaînes sont encodées et stockées dans un fichier de base de données. Voici la syntaxe simple.

PRAGMA encoding;
PRAGMA encoding = format;

La valeur de format peut être l'une des UTF-8, UTF-16le, ou UTF-16be.

freelist_count Pragma

le freelist_countpragma renvoie un seul entier indiquant le nombre de pages de base de données actuellement marquées comme libres et disponibles. Voici la syntaxe simple.

PRAGMA [database.]freelist_count;

La valeur de format peut être l'une des UTF-8, UTF-16le, ou UTF-16be.

index_info Pragma

le index_infopragma renvoie des informations sur un index de base de données. Voici la syntaxe simple.

PRAGMA [database.]index_info( index_name );

L'ensemble de résultats contiendra une ligne pour chaque colonne contenue dans l'index donnant la séquence des colonnes, l'index de la colonne avec la table et le nom de la colonne.

index_list Pragma

index_listpragma répertorie tous les index associés à une table. Voici la syntaxe simple.

PRAGMA [database.]index_list( table_name );

L'ensemble de résultats contiendra une ligne pour chaque index donnant la séquence d'index, le nom d'index et l'indicateur indiquant si l'index est unique ou non.

journal_mode Pragma

le journal_modepragma obtient ou définit le mode journal qui contrôle la manière dont le fichier journal est stocké et traité. Voici la syntaxe simple.

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

Il existe cinq modes de journal pris en charge, comme indiqué dans le tableau suivant.

N ° Sr. Valeur et description de Pragma
1

DELETE

C'est le mode par défaut. Ici, à la fin d'une transaction, le fichier journal est supprimé.

2

TRUNCATE

Le fichier journal est tronqué à une longueur de zéro octet.

3

PERSIST

Le fichier journal est laissé en place, mais l'en-tête est écrasé pour indiquer que le journal n'est plus valide.

4

MEMORY

L'enregistrement du journal est conservé en mémoire plutôt que sur le disque.

5

OFF

Aucun enregistrement de journal n'est conservé.

max_page_count Pragma

le max_page_countpragma obtient ou définit le nombre maximal de pages autorisé pour une base de données. Voici la syntaxe simple.

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

La valeur par défaut est 1 073 741 823, soit une giga-page, ce qui signifie que si la taille de page par défaut de 1 Ko, cela permet aux bases de données de croître jusqu'à un téraoctet.

page_count Pragma

le page_countpragma renvoie le nombre actuel de pages de la base de données. Voici la syntaxe simple -

PRAGMA [database.]page_count;

La taille du fichier de base de données doit être page_count * page_size.

page_size Pragma

le page_sizepragma obtient ou définit la taille des pages de la base de données. Voici la syntaxe simple.

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

Par défaut, les tailles autorisées sont 512, 1024, 2048, 4096, 8192, 16384 et 32768 octets. La seule façon de modifier la taille de la page sur une base de données existante consiste à définir la taille de la page, puis à VACUUM immédiatement la base de données.

parser_trace Pragma

le parser_tracepragma contrôle l'impression de l'état de débogage lors de l'analyse des commandes SQL. Voici la syntaxe simple.

PRAGMA parser_trace = [true|false];

Par défaut, il est défini sur false mais lorsqu'il est activé en le définissant sur true, l'analyseur SQL affiche son état lorsqu'il analyse les commandes SQL.

recursive_triggers Pragma

le recursive_triggerspragma obtient ou définit la fonctionnalité de déclenchement récursif. Si les déclencheurs récursifs ne sont pas activés, une action de déclencheur ne déclenchera pas un autre déclencheur. Voici la syntaxe simple.

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

schema_version Pragma

le schema_versionpragma obtient ou définit la valeur de la version du schéma qui est stockée dans l'en-tête de la base de données. Voici la syntaxe simple.

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

Il s'agit d'une valeur entière signée 32 bits qui assure le suivi des modifications de schéma. Chaque fois qu'une commande de modification de schéma est exécutée (comme CREATE ... ou DROP ...), cette valeur est incrémentée.

secure_delete Pragma

le secure_deletepragma est utilisé pour contrôler la manière dont le contenu est supprimé de la base de données. Voici la syntaxe simple.

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

La valeur par défaut de l'indicateur de suppression sécurisée est normalement désactivée, mais cela peut être modifié avec l'option de génération SQLITE_SECURE_DELETE.

sql_trace Pragma

le sql_tracepragma est utilisé pour vider les résultats de la trace SQL à l'écran. Voici la syntaxe simple.

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

SQLite doit être compilé avec la directive SQLITE_DEBUG pour que ce pragma soit inclus.

Synchrone Pragma

le synchronouspragma obtient ou définit le mode de synchronisation de disque actuel, qui contrôle le degré d'agressivité auquel SQLite écrira les données jusqu'au stockage physique. Voici la syntaxe simple.

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

SQLite prend en charge les modes de synchronisation suivants, comme indiqué dans le tableau.

N ° Sr. Valeur et description de Pragma
1

0 or OFF

Pas de synchronisation du tout

2

1 or NORMAL

Synchroniser après chaque séquence d'opérations critiques sur le disque

3

2 or FULL

Synchroniser après chaque opération critique du disque

temp_store Pragma

le temp_storepragma obtient ou définit le mode de stockage utilisé par les fichiers de base de données temporaires. Voici la syntaxe simple.

PRAGMA temp_store;
PRAGMA temp_store = mode;

SQLite prend en charge les modes de stockage suivants.

N ° Sr. Valeur et description de Pragma
1

0 or DEFAULT

Utilisez la valeur par défaut au moment de la compilation. Normalement FILE.

2

1 or FILE

Utilisez le stockage basé sur des fichiers.

3

2 or MEMORY

Utilisez le stockage basé sur la mémoire.

temp_store_directory Pragma

le temp_store_directorypragma obtient ou définit l'emplacement utilisé pour les fichiers de base de données temporaires. Voici la syntaxe simple.

PRAGMA temp_store_directory;
PRAGMA temp_store_directory = 'directory_path';

user_version Pragma

le user_versionpragma obtient ou définit la valeur de la version définie par l'utilisateur qui est stockée dans l'en-tête de la base de données. Voici la syntaxe simple.

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

Il s'agit d'une valeur entière signée 32 bits, qui peut être définie par le développeur à des fins de suivi de version.

writable_schema Pragma

le writable_schemapragma obtient ou définit la possibilité de modifier les tables système. Voici la syntaxe simple.

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

Si ce pragma est défini, les tables commençant par sqlite_ peuvent être créées et modifiées, y compris la table sqlite_master. Soyez prudent lorsque vous utilisez pragma car cela peut entraîner une corruption complète de la base de données.