SQLite - PRAGMA

SQLite PRAGMAEl comando es un comando especial que se usa para controlar varias variables ambientales y banderas de estado dentro del entorno SQLite. Se puede leer un valor de PRAGMA y también se puede configurar según los requisitos.

Sintaxis

Para consultar el valor actual de PRAGMA, simplemente proporcione el nombre del pragma.

PRAGMA pragma_name;

Para establecer un nuevo valor para PRAGMA, use la siguiente sintaxis.

PRAGMA pragma_name = value;

El modo establecido puede ser el nombre o el equivalente entero, pero el valor devuelto siempre será un número entero.

auto_vacuum Pragma

los auto_vacuumpragma obtiene o establece el modo de vacío automático. A continuación se muestra la sintaxis simple.

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

Dónde mode puede ser cualquiera de los siguientes:

No Señor. Valor y descripción de Pragma
1

0 or NONE

La aspiración automática está desactivada. Este es el modo predeterminado, lo que significa que un archivo de base de datos nunca se reducirá de tamaño a menos que se vacíe manualmente mediante el comando VACUUM.

2

1 or FULL

El vacío automático está habilitado y es completamente automático, lo que permite que un archivo de base de datos se reduzca a medida que se eliminan los datos de la base de datos.

3

2 or INCREMENTAL

La aspiración automática está habilitada pero debe activarse manualmente. En este modo se mantienen los datos de referencia, pero las páginas libres simplemente se colocan en la lista libre. Estas páginas se pueden recuperar utilizando elincremental_vacuum pragma en cualquier momento.

cache_size Pragma

los cache_sizepragma puede obtener o establecer temporalmente el tamaño máximo de la caché de la página en memoria. A continuación se muestra la sintaxis simple.

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

los pagesvalor representa el número de páginas en la caché. La caché de páginas incorporada tiene un tamaño predeterminado de 2000 páginas y un tamaño mínimo de 10 páginas.

case_sensitive_like Pragma

los case_sensitive_likepragma controla la distinción entre mayúsculas y minúsculas de la expresión LIKE incorporada. De forma predeterminada, este pragma es falso, lo que significa que el operador LIKE incorporado ignora las mayúsculas y minúsculas. A continuación se muestra la sintaxis simple.

PRAGMA case_sensitive_like = [true|false];

No hay forma de consultar el estado actual de este pragma.

count_changes Pragma

count_changespragma obtiene o establece el valor de retorno de declaraciones de manipulación de datos como INSERT, UPDATE y DELETE. A continuación se muestra la sintaxis simple.

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

De forma predeterminada, este pragma es falso y estas declaraciones no devuelven nada. Si se establece en verdadero, cada una de las declaraciones mencionadas devolverá una tabla de una columna y una fila que consta de un único valor entero que indica las filas afectadas por la operación.

database_list Pragma

los database_listpragma se utilizará para enumerar todas las bases de datos adjuntas. A continuación se muestra la sintaxis simple.

PRAGMA database_list;

Este pragma devolverá una tabla de tres columnas con una fila por base de datos abierta o adjunta, dando el número de secuencia de la base de datos, su nombre y el archivo asociado.

codificación de Pragma

los encodingpragma controla cómo se codifican y almacenan las cadenas en un archivo de base de datos. A continuación se muestra la sintaxis simple.

PRAGMA encoding;
PRAGMA encoding = format;

El valor de formato puede ser uno de UTF-8, UTF-16leo UTF-16be.

freelist_count Pragma

los freelist_countpragma devuelve un solo entero que indica cuántas páginas de la base de datos están marcadas actualmente como libres y disponibles. A continuación se muestra la sintaxis simple.

PRAGMA [database.]freelist_count;

El valor de formato puede ser uno de UTF-8, UTF-16leo UTF-16be.

index_info Pragma

los index_infopragma devuelve información sobre un índice de base de datos. A continuación se muestra la sintaxis simple.

PRAGMA [database.]index_info( index_name );

El conjunto de resultados contendrá una fila para cada columna contenida en el índice que da la secuencia de la columna, el índice de la columna dentro de la tabla y el nombre de la columna.

index_list Pragma

index_listpragma enumera todos los índices asociados con una tabla. A continuación se muestra la sintaxis simple.

PRAGMA [database.]index_list( table_name );

El conjunto de resultados contendrá una fila para cada índice con la secuencia del índice, el nombre del índice y la bandera que indica si el índice es único o no.

journal_mode Pragma

los journal_modepragma obtiene o establece el modo de diario que controla cómo se almacena y procesa el archivo de diario. A continuación se muestra la sintaxis simple.

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

Hay cinco modos de diario admitidos que se enumeran en la siguiente tabla.

No Señor. Valor y descripción de Pragma
1

DELETE

Este es el modo por defecto. Aquí, al final de una transacción, se elimina el archivo de diario.

2

TRUNCATE

El archivo de diario se trunca a una longitud de cero bytes.

3

PERSIST

El archivo de diario se deja en su lugar, pero el encabezado se sobrescribe para indicar que el diario ya no es válido.

4

MEMORY

El registro de diario se guarda en la memoria, en lugar de en el disco.

5

OFF

No se mantiene ningún registro de diario.

max_page_count Pragma

los max_page_countpragma obtiene o establece el número máximo de páginas permitido para una base de datos. A continuación se muestra la sintaxis simple.

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

El valor predeterminado es 1.073.741.823, que es una giga-página, lo que significa que si el tamaño de página predeterminado es de 1 KB, esto permite que las bases de datos crezcan hasta un terabyte.

page_count Pragma

los page_countpragma devuelve el número actual de páginas de la base de datos. A continuación se muestra la sintaxis simple:

PRAGMA [database.]page_count;

El tamaño del archivo de la base de datos debe ser page_count * page_size.

page_size Pragma

los page_sizepragma obtiene o establece el tamaño de las páginas de la base de datos. A continuación se muestra la sintaxis simple.

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

De forma predeterminada, los tamaños permitidos son 512, 1024, 2048, 4096, 8192, 16384 y 32768 bytes. La única forma de alterar el tamaño de la página en una base de datos existente es establecer el tamaño de la página y luego VACÍAR inmediatamente la base de datos.

parser_trace Pragma

los parser_tracepragma controla la impresión del estado de depuración mientras analiza los comandos SQL. A continuación se muestra la sintaxis simple.

PRAGMA parser_trace = [true|false];

De forma predeterminada, se establece en falso, pero cuando se habilita al establecerlo en verdadero, el analizador de SQL imprimirá su estado a medida que analiza los comandos SQL.

activadores_recursivos Pragma

los recursive_triggerspragma obtiene o establece la funcionalidad del disparador recursivo. Si los disparadores recursivos no están habilitados, una acción de disparador no disparará otro disparador. A continuación se muestra la sintaxis simple.

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

versión_esquema Pragma

los schema_versionpragma obtiene o establece el valor de la versión del esquema que se almacena en el encabezado de la base de datos. A continuación se muestra la sintaxis simple.

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

Este es un valor entero de 32 bits con signo que realiza un seguimiento de los cambios de esquema. Siempre que se ejecuta un comando de modificación de esquema (como CREAR ... o DROP ...), este valor se incrementa.

secure_delete Pragma

los secure_deletepragma se utiliza para controlar cómo se elimina el contenido de la base de datos. A continuación se muestra la sintaxis simple.

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

El valor predeterminado para el indicador de eliminación segura normalmente está desactivado, pero esto se puede cambiar con la opción de compilación SQLITE_SECURE_DELETE.

sql_trace Pragma

los sql_tracepragma se utiliza para volcar los resultados del rastreo de SQL en la pantalla. A continuación se muestra la sintaxis simple.

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

SQLite debe compilarse con la directiva SQLITE_DEBUG para que se incluya este pragma.

Pragma sincrónico

los synchronouspragma obtiene o establece el modo de sincronización de disco actual, que controla la agresividad con la que SQLite escribirá los datos hasta el almacenamiento físico. A continuación se muestra la sintaxis simple.

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

SQLite admite los siguientes modos de sincronización que se enumeran en la tabla.

No Señor. Valor y descripción de Pragma
1

0 or OFF

Sin sincronizaciones en absoluto

2

1 or NORMAL

Sincronizar después de cada secuencia de operaciones críticas del disco

3

2 or FULL

Sincronizar después de cada operación crítica del disco

temp_store Pragma

los temp_storepragma obtiene o establece el modo de almacenamiento utilizado por los archivos de base de datos temporales. A continuación se muestra la sintaxis simple.

PRAGMA temp_store;
PRAGMA temp_store = mode;

SQLite admite los siguientes modos de almacenamiento.

No Señor. Valor y descripción de Pragma
1

0 or DEFAULT

Utilice el valor predeterminado en tiempo de compilación. Normalmente ARCHIVO.

2

1 or FILE

Utilice almacenamiento basado en archivos.

3

2 or MEMORY

Utilice almacenamiento basado en memoria.

temp_store_directory Pragma

los temp_store_directorypragma obtiene o establece la ubicación utilizada para los archivos de base de datos temporales. A continuación se muestra la sintaxis simple.

PRAGMA temp_store_directory;
PRAGMA temp_store_directory = 'directory_path';

user_version Pragma

los user_versionpragma obtiene o establece el valor de versión definido por el usuario que se almacena en el encabezado de la base de datos. A continuación se muestra la sintaxis simple.

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

Este es un valor entero de 32 bits con signo, que el desarrollador puede establecer con el propósito de rastrear la versión.

writable_schema Pragma

los writable_schemapragma obtiene o establece la capacidad de modificar tablas del sistema. A continuación se muestra la sintaxis simple.

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

Si se establece este pragma, se pueden crear y modificar tablas que comienzan con sqlite_, incluida la tabla sqlite_master. Tenga cuidado al usar pragma porque puede provocar una corrupción completa de la base de datos.