SQLite - PRAGMA

SQLite PRAGMAcomando è un comando speciale da utilizzare per controllare varie variabili ambientali e flag di stato all'interno dell'ambiente SQLite. È possibile leggere un valore PRAGMA e impostarlo in base alle esigenze.

Sintassi

Per interrogare il valore PRAGMA corrente, è sufficiente fornire il nome del pragma.

PRAGMA pragma_name;

Per impostare un nuovo valore per PRAGMA, utilizzare la seguente sintassi.

PRAGMA pragma_name = value;

La modalità set può essere il nome o l'equivalente intero, ma il valore restituito sarà sempre un numero intero.

auto_vacuum Pragma

Il auto_vacuumpragma ottiene o imposta la modalità di vuoto automatico. La seguente è la semplice sintassi.

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

Dove mode può essere uno dei seguenti:

Sr.No. Pragma Value & Description
1

0 or NONE

L'aspirazione automatica è disabilitata. Questa è la modalità predefinita, il che significa che un file di database non si ridurrà mai di dimensioni a meno che non venga rimosso manualmente utilizzando il comando VACUUM.

2

1 or FULL

Il vuoto automatico è attivato e completamente automatico, il che consente a un file di database di ridursi quando i dati vengono rimossi dal database.

3

2 or INCREMENTAL

L'aspirazione automatica è abilitata ma deve essere attivata manualmente. In questa modalità vengono mantenuti i dati di riferimento, ma le pagine libere vengono semplicemente inserite nell'elenco libero. Queste pagine possono essere recuperate utilizzando ilincremental_vacuum pragma in qualsiasi momento.

cache_size Pragma

Il cache_sizepragma può ottenere o impostare temporaneamente la dimensione massima della cache della pagina in memoria. Di seguito è riportata la semplice sintassi.

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

Il pagesil valore rappresenta il numero di pagine nella cache. La cache della pagina incorporata ha una dimensione predefinita di 2.000 pagine e una dimensione minima di 10 pagine.

case_sensitive_like Pragma

Il case_sensitive_likepragma controlla la distinzione tra maiuscole e minuscole dell'espressione LIKE incorporata. Per impostazione predefinita, questo pragma è falso, il che significa che l'operatore LIKE incorporato ignora le lettere maiuscole e minuscole. Di seguito è riportata la semplice sintassi.

PRAGMA case_sensitive_like = [true|false];

Non è possibile interrogare lo stato corrente di questo pragma.

count_changes Pragma

count_changespragma ottiene o imposta il valore di ritorno delle istruzioni di manipolazione dei dati come INSERT, UPDATE e DELETE. Di seguito è riportata la semplice sintassi.

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

Per impostazione predefinita, questo pragma è falso e queste istruzioni non restituiscono nulla. Se impostata su true, ciascuna delle istruzioni menzionate restituirà una tabella a una colonna e una riga composta da un singolo valore intero che indica le righe interessate dall'operazione.

database_list Pragma

Il database_listpragma verrà utilizzato per elencare tutti i database allegati. Di seguito è riportata la semplice sintassi.

PRAGMA database_list;

Questo pragma restituirà una tabella a tre colonne con una riga per database aperto o allegato che fornisce il numero di sequenza del database, il suo nome e il file associato.

codifica Pragma

Il encodingpragma controlla come le stringhe vengono codificate e archiviate in un file di database. Di seguito è riportata la semplice sintassi.

PRAGMA encoding;
PRAGMA encoding = format;

Il valore del formato può essere uno di UTF-8, UTF-16le, o UTF-16be.

freelist_count Pragma

Il freelist_countpragma restituisce un singolo numero intero che indica quante pagine del database sono attualmente contrassegnate come libere e disponibili. Di seguito è riportata la semplice sintassi.

PRAGMA [database.]freelist_count;

Il valore del formato può essere uno di UTF-8, UTF-16le, o UTF-16be.

index_info Pragma

Il index_infopragma restituisce informazioni su un indice di database. Di seguito è riportata la semplice sintassi.

PRAGMA [database.]index_info( index_name );

Il set di risultati conterrà una riga per ogni colonna contenuta nell'indice che fornisce la sequenza della colonna, l'indice della colonna con la tabella e il nome della colonna.

index_list Pragma

index_listpragma elenca tutti gli indici associati a una tabella. Di seguito è riportata la semplice sintassi.

PRAGMA [database.]index_list( table_name );

Il set di risultati conterrà una riga per ogni indice fornendo la sequenza dell'indice, il nome dell'indice e il flag che indicano se l'indice è univoco o meno.

journal_mode Pragma

Il journal_modepragma ottiene o imposta la modalità journal che controlla come il file journal viene archiviato ed elaborato. Di seguito è riportata la semplice sintassi.

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

Sono disponibili cinque modalità journal supportate come elencato nella tabella seguente.

Sr.No. Pragma Value & Description
1

DELETE

Questa è la modalità di default. Qui alla conclusione di una transazione, il file journal viene cancellato.

2

TRUNCATE

Il file journal viene troncato a una lunghezza di zero byte.

3

PERSIST

Il file journal viene lasciato in posizione, ma l'intestazione viene sovrascritta per indicare che il journal non è più valido.

4

MEMORY

Il record del journal viene conservato in memoria, anziché su disco.

5

OFF

Non viene conservato alcun record di giornale.

max_page_count Pragma

Il max_page_countpragma ottiene o imposta il numero massimo di pagine consentito per un database. Di seguito è riportata la semplice sintassi.

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

Il valore predefinito è 1.073.741.823 che è una giga-pagina, il che significa che se la dimensione della pagina predefinita è di 1 KB, questo consente ai database di crescere fino a un terabyte.

page_count Pragma

Il page_countpragma restituisce il numero corrente di pagine nel database. La seguente è la semplice sintassi:

PRAGMA [database.]page_count;

La dimensione del file di database dovrebbe essere page_count * page_size.

page_size Pragma

Il page_sizepragma ottiene o imposta la dimensione delle pagine del database. Di seguito è riportata la semplice sintassi.

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

Per impostazione predefinita, le dimensioni consentite sono 512, 1024, 2048, 4096, 8192, 16384 e 32768 byte. L'unico modo per modificare la dimensione della pagina su un database esistente è impostare la dimensione della pagina e quindi VACUUM immediatamente il database.

parser_trace Pragma

Il parser_tracepragma controlla la stampa dello stato di debug mentre analizza i comandi SQL. Di seguito è riportata la semplice sintassi.

PRAGMA parser_trace = [true|false];

Per impostazione predefinita, è impostato su false, ma se abilitato impostandolo su true, il parser SQL stamperà il suo stato mentre analizza i comandi SQL.

recursive_triggers Pragma

Il recursive_triggerspragma ottiene o imposta la funzionalità di trigger ricorsivo. Se i trigger ricorsivi non sono abilitati, un'azione trigger non attiverà un altro trigger. La seguente è la semplice sintassi.

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

schema_version Pragma

Il schema_versionpragma ottiene o imposta il valore della versione dello schema memorizzato nell'intestazione del database. Di seguito è riportata la semplice sintassi.

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

Si tratta di un valore intero con segno a 32 bit che tiene traccia delle modifiche allo schema. Ogni volta che viene eseguito un comando che altera lo schema (come, CREATE ... o DROP ...), questo valore viene incrementato.

secure_delete Pragma

Il secure_deletepragma viene utilizzato per controllare come il contenuto viene eliminato dal database. Di seguito è riportata la semplice sintassi.

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

Il valore predefinito per il flag di eliminazione sicura è normalmente disattivato, ma può essere modificato con l'opzione di generazione SQLITE_SECURE_DELETE.

sql_trace Pragma

Il sql_tracepragma viene utilizzato per eseguire il dump dei risultati della traccia SQL sullo schermo. Di seguito è riportata la semplice sintassi.

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

SQLite deve essere compilato con la direttiva SQLITE_DEBUG per includere questo pragma.

Pragma sincrono

Il synchronouspragma ottiene o imposta la modalità di sincronizzazione del disco corrente, che controlla quanto aggressivamente SQLite scriverà i dati fino all'archiviazione fisica. La seguente è la semplice sintassi.

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

SQLite supporta le seguenti modalità di sincronizzazione come elencato nella tabella.

Sr.No. Pragma Value & Description
1

0 or OFF

Nessuna sincronizzazione

2

1 or NORMAL

Sincronizza dopo ogni sequenza di operazioni critiche del disco

3

2 or FULL

Sincronizza dopo ogni operazione critica del disco

temp_store Pragma

Il temp_storepragma ottiene o imposta la modalità di archiviazione utilizzata dai file di database temporanei. Di seguito è riportata la semplice sintassi.

PRAGMA temp_store;
PRAGMA temp_store = mode;

SQLite supporta le seguenti modalità di archiviazione.

Sr.No. Pragma Value & Description
1

0 or DEFAULT

Usa impostazione predefinita in fase di compilazione. Normalmente FILE.

2

1 or FILE

Usa l'archiviazione basata su file.

3

2 or MEMORY

Usa l'archiviazione basata sulla memoria.

temp_store_directory Pragma

Il temp_store_directorypragma ottiene o imposta la posizione utilizzata per i file di database temporanei. Di seguito è riportata la semplice sintassi.

PRAGMA temp_store_directory;
PRAGMA temp_store_directory = 'directory_path';

user_version Pragma

Il user_versionpragma ottiene o imposta il valore della versione definito dall'utente che è memorizzato nell'intestazione del database. Di seguito è riportata la semplice sintassi.

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

Si tratta di un valore intero con segno a 32 bit, che può essere impostato dallo sviluppatore a scopo di monitoraggio della versione.

writable_schema Pragma

Il writable_schemapragma ottiene o imposta la capacità di modificare le tabelle di sistema. Di seguito è riportata la semplice sintassi.

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

Se questo pragma è impostato, le tabelle che iniziano con sqlite_ possono essere create e modificate, inclusa la tabella sqlite_master. Fare attenzione durante l'utilizzo di pragma perché può portare al completo danneggiamento del database.