SQLite PRAGMA
SQLitesPRAGMA-Befehl ist ein spezieller Befehl, der innerhalb der SQLite-Umgebung verwendet werden kann, um verschiedene Umgebungsvariablen und Statusflags zu steuern. Ein PRAGMA-Wert kann gelesen und bei Bedarf auch gesetzt werden.
Syntax
Um den aktuellen PRAGMA-Wert abzufragen, geben Sie einfach den Namen des Pragmas an:
PRAGMA pragma_name;
Um einen neuen Wert für das PRAGMA festzulegen, lautet die Syntax wie folgt:
PRAGMA pragma_name = value;
Der Einstellmodus kann ein Name oder eine entsprechende Ganzzahl sein, aber der zurückgegebene Wert ist immer eine Ganzzahl.
auto_vacuum-Pragma
auto_vacuumDas Pragma ruft den Auto-Vacuum-Modus ab oder legt ihn fest. Die Syntax lautet wie folgt:
PRAGMA [database.]auto_vacuum; PRAGMA [database.]auto_vacuum = mode;
Dabei kannmodeeiner der folgenden Werte sein:
| Pragma-Wert | Beschreibung |
|---|---|
| 0 oder NONE | Deaktiviert Auto-Vacuum. Dies ist der Standardmodus, was bedeutet, dass die Größe der Datenbankdatei nicht verringert wird, es sei denn, der Befehl VACUUM wird manuell verwendet. |
| 1 oder FULL | Aktiviert Auto-Vacuum, das vollständig automatisch ist. In diesem Modus darf sich die Datenbankdatei verkleinern, wenn Daten aus der Datenbank entfernt werden. |
| 2 oder INCREMENTAL | Aktiviert Auto-Vacuum, muss aber manuell aktiviert werden. In diesem Modus werden referenzierte Daten beibehalten, und freie Seiten werden nur in die Freiliste eingetragen. Diese Seiten können jederzeitincremental_vacuum-Pragmazum Überschreiben verwendet werden. |
cache_size-Pragma
cache_sizeDas Pragma kann die maximale Größe des Seiten-Caches im Speicher abrufen oder vorübergehend festlegen. Die Syntax lautet wie folgt:
PRAGMA [database.]cache_size; PRAGMA [database.]cache_size = pages;
pagesDer Wert gibt die Anzahl der Seiten im Cache an. Die Standardgröße des integrierten Seiten-Caches beträgt 2,000 Seiten, bei einer Mindestgröße von 10 Seiten.
case_sensitive_like-Pragma
case_sensitive_likeDas Pragma steuert die Groß-/Kleinschreibung des integrierten LIKE-Ausdrucks. Standardmäßig ist dieses Pragma false, was bedeutet, dass der integrierte LIKE-Operator die Groß-/Kleinschreibung von Buchstaben ignoriert. Die Syntax lautet wie folgt:
PRAGMA case_sensitive_like = [true|false];
Derzeit gibt es keine Möglichkeit, den aktuellen Zustand dieses Pragmas abzufragen.
count_changes-Pragma
count_changesDas Pragma ruft den Rückgabewert von Datenmanipulationsanweisungen wie INSERT, UPDATE und DELETE ab oder legt ihn fest. Die Syntax lautet wie folgt:
PRAGMA count_changes; PRAGMA count_changes = [true|false];
Standardmäßig ist dieses Pragma false, und diese Anweisungen geben nichts zurück. Wenn es auf true gesetzt wird, geben die genannten Anweisungen jeweils eine einzeilige, einspaltige Tabelle zurück, die aus einem einzelnen ganzzahligen Wert besteht, der die von der Operation betroffenen Zeilen darstellt.
database_list-Pragma
database_listDas Pragma wird verwendet, um alle Datenbankverbindungen aufzulisten. Die Syntax lautet wie folgt:
PRAGMA database_list;
Dieses Pragma gibt eine Tabelle mit einer Zeile und drei Spalten zurück. Wann immer eine Datenbank geöffnet oder angehängt wird, liefert es die Sequenznummer der Datenbank, ihren Namen und die zugehörige Datei.
encoding-Pragma
encodingDas Pragma steuert, wie Zeichenfolgen codiert und in der Datenbankdatei gespeichert werden. Die Syntax lautet wie folgt:
PRAGMA encoding; PRAGMA encoding = format;
Der Formatwert kann einer von UTF-8, UTF-16le oder UTF-16be sein.
freelist_count-Pragma
freelist_countDas Pragma gibt eine Ganzzahl zurück, die die Anzahl der Datenbankseiten darstellt, die derzeit als frei und verfügbar markiert sind. Die Syntax lautet wie folgt:
PRAGMA [database.]freelist_count;
index_info-Pragma
index_infoDas Pragma gibt Informationen über Datenbankindizes zurück. Die Syntax lautet wie folgt:
PRAGMA [database.]index_info( index_name );
Die Ergebnismenge zeigt für jede im angegebenen Index enthaltene Spalte eine Zeile an, einschließlich der Spaltensequenz, des Spaltenindex innerhalb der Tabelle und des Spaltennamens.
index_list-Pragma
index_listDas Pragma listet alle Indizes auf, die einer Tabelle zugeordnet sind. Die Syntax lautet wie folgt:
PRAGMA [database.]index_list( table_name );
Die Ergebnismenge zeigt eine Zeile für jeden Index an, gibt die Indexreihenfolge, den Indexnamen und eine Kennung an, die angibt, ob der Index eindeutig ist.
journal_mode Pragma
journal_modeDas Pragma ruft den Journal-Modus ab oder legt ihn fest, der steuert, wie Journaldateien gespeichert und verarbeitet werden. Die Syntax lautet wie folgt:
PRAGMA journal_mode; PRAGMA journal_mode = mode; PRAGMA database.journal_mode; PRAGMA database.journal_mode = mode;
Hier werden fünf Journal-Modi unterstützt:
| Pragma-Wert | Beschreibung |
|---|---|
| DELETE | Der Standardmodus. In diesem Modus wird die Journaldatei am Ende der Transaktion gelöscht. |
| TRUNCATE | Die Journaldatei wird auf eine Länge von null Bytes gekürzt. |
| PERSIST | Die Journaldatei bleibt bestehen, aber der Header wird neu geschrieben, um anzuzeigen, dass das Journal nicht mehr gültig ist. |
| MEMORY | Journal-Einträge werden im Speicher statt auf der Festplatte gehalten. |
| OFF | Es werden keine Journal-Einträge gehalten. |
max_page_count Pragma
max_page_countDas Pragma ruft die maximale Anzahl der für die Datenbank zulässigen Seiten ab oder legt sie fest. Die Syntax lautet wie folgt:
PRAGMA [database.]max_page_count; PRAGMA [database.]max_page_count = max_page;
Der Standardwert ist 1,073,741,823, was ein Gigabyte an Seiten ist. Das heißt, mit der standardmäßigen Seitengröße von 1 KB kann die Datenbank auf ein Terabyte anwachsen.
page_count Pragma
page_countDas Pragma gibt die Anzahl der Seiten in der aktuellen Datenbank zurück. Die Syntax lautet wie folgt:
PRAGMA [database.]page_count;
Die Größe der Datenbankdatei sollte page_count * page_size sein.
page_size Pragma
page_sizeDas Pragma ruft die Größe der Datenbankseiten ab oder legt sie fest. Die Syntax lautet wie folgt:
PRAGMA [database.]page_size; PRAGMA [database.]page_size = bytes;
Standardmäßig sind die zulässigen Größen 512, 1024, 2048, 4096, 8192, 16384 und 32768 Bytes. Die einzige Möglichkeit, die Seitengröße einer vorhandenen Datenbank zu ändern, besteht darin, die Seitengröße festzulegen und dann sofort VACUUM für die Datenbank auszuführen.
parser_trace Pragma
parser_traceDas Pragma steuert die Ausgabe des Debug-Status beim Parsen von SQL-Befehlen. Die Syntax lautet wie folgt:
PRAGMA parser_trace = [true|false];
Standardmäßig ist es auf false gesetzt, aber es wird aktiviert, wenn es auf true gesetzt wird. In diesem Fall gibt der SQL-Parser seinen Status aus, während er SQL-Befehle parst.
recursive_triggers Pragma
recursive_triggersDas Pragma ruft die Funktion für rekursive Trigger ab oder legt sie fest. Wenn rekursive Trigger nicht aktiviert sind, löst eine Triggeraktion keinen weiteren Trigger aus. Die Syntax lautet wie folgt:
PRAGMA recursive_triggers; PRAGMA recursive_triggers = [true|false];
schema_version Pragma
schema_versionDas Pragma ruft den im Datenbankheader gespeicherten Schema-Versionswert ab oder legt ihn fest. Die Syntax lautet wie folgt:
PRAGMA [database.]schema_version; PRAGMA [database.]schema_version = number;
Dies ist ein 32-Bit-Ganzzahlwert mit Vorzeichen, der zum Verfolgen von Schemaänderungen verwendet wird. Immer wenn ein schemaändernder Befehl ausgeführt wird (wie CREATE... oder DROP...), wird dieser Wert erhöht.
secure_delete Pragma
secure_deleteDas Pragma wird verwendet, um zu steuern, wie Inhalte aus der Datenbank gelöscht werden. Die Syntax lautet wie folgt:
PRAGMA secure_delete; PRAGMA secure_delete = [true|false]; PRAGMA database.secure_delete; PRAGMA database.secure_delete = [true|false];
Der Standardwert des Secure-Delete-Flags ist normalerweise deaktiviert, aber dies kann über die Build-Option SQLITE_SECURE_DELETE geändert werden.
sql_trace Pragma
sql_traceDas Pragma wird verwendet, um SQL-Trace-Ergebnisse auf dem Bildschirm auszugeben. Die Syntax lautet wie folgt:
PRAGMA sql_trace; PRAGMA sql_trace = [true|false];
SQLite muss mit der Direktive SQLITE_DEBUG kompiliert werden, um dieses Pragma verwenden zu können.
synchronous Pragma
synchronousDas Pragma ruft den aktuellen Festplattensynchronisierungsmodus ab oder legt ihn fest, der steuert, wie aggressiv SQLite Daten in den physischen Speicher schreibt. Die Syntax lautet wie folgt:
PRAGMA [database.]synchronous; PRAGMA [database.]synchronous = mode;
SQLite unterstützt die folgenden Synchronisierungsmodi:
| Pragma-Wert | Beschreibung |
|---|---|
| 0 oder OFF | Es wird keine Synchronisierung durchgeführt. |
| 1 oder NORMAL | Synchronisieren nach jeder Folge kritischer Festplattenoperationen. |
| 2 oder FULL | Synchronisieren nach jeder kritischen Festplattenoperation. |
temp_store-Pragma
temp_storeDas Pragma ruft den für temporäre Datenbankdateien verwendeten Speichermodus ab oder legt ihn fest. Die Syntax lautet wie folgt:
PRAGMA temp_store; PRAGMA temp_store = mode;
SQLite unterstützt die folgenden Speichermodi:
| Pragma-Wert | Beschreibung |
|---|---|
| 0 oder DEFAULT | Verwendet standardmäßig den Kompilierzeitmodus. Normalerweise FILE. |
| 1 oder FILE | Verwendet dateibasierte Speicherung. |
| 2 oder MEMORY | Verwendet speicherbasierte Speicherung. |
temp_store_directory Pragma
temp_store_directoryDas Pragma ruft den für temporäre Datenbankdateien verwendeten Speicherort ab oder legt ihn fest. Die Syntax lautet wie folgt:
PRAGMA temp_store_directory; PRAGMA temp_store_directory = 'directory_path';
user_version Pragma
user_versionDas Pragma ruft den benutzerdefinierten Versionswert ab, der im Datenbank-Header gespeichert ist, oder legt ihn fest. Die Syntax lautet wie folgt:
PRAGMA [database.]user_version; PRAGMA [database.]user_version = number;
Dies ist ein vorzeichenbehafteter 32-Bit-Ganzzahlwert, der von Entwicklern zu Zwecken der Versionsverfolgung festgelegt werden kann.
writable_schema Pragma
writable_schemaDas Pragma ruft ab oder legt fest, ob Systemtabellen geändert werden können. Die Syntax lautet wie folgt:
PRAGMA writable_schema; PRAGMA writable_schema = [true|false];
Wenn dieses Pragma gesetzt ist, können Tabellen, die mit sqlite_ beginnen, erstellt und geändert werden, einschließlich der Tabelle sqlite_master. Verwenden Sie dieses Pragma mit Vorsicht, da es zu einer Beschädigung der gesamten Datenbank führen kann.
Andere Erweiterungen