SQLite - PRAGMA

SQLite PRAGMApolecenie to specjalne polecenie używane do kontrolowania różnych zmiennych środowiskowych i flag stanu w środowisku SQLite. Wartość PRAGMA można odczytać, a także ustawić w zależności od wymagań.

Składnia

Aby zapytać o bieżącą wartość PRAGMA, wystarczy podać nazwę pragmy.

PRAGMA pragma_name;

Aby ustawić nową wartość dla PRAGMA, użyj następującej składni.

PRAGMA pragma_name = value;

Ustawionym trybem może być nazwa lub odpowiednik liczby całkowitej, ale zwracana wartość zawsze będzie liczbą całkowitą.

auto_vacuum Pragma

Plik auto_vacuumpragma pobiera lub ustawia tryb automatycznego odkurzania. Poniżej znajduje się prosta składnia.

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

Gdzie mode może być dowolną z następujących -

Sr.No. Wartość i opis firmy Pragma
1

0 or NONE

Automatyczne odkurzanie jest wyłączone. Jest to tryb domyślny, co oznacza, że ​​rozmiar pliku bazy danych nigdy się nie zmniejszy, chyba że zostanie ręcznie odkurzany za pomocą polecenia VACUUM.

2

1 or FULL

Automatyczne odkurzanie jest włączone i w pełni automatyczne, co umożliwia kurczenie się pliku bazy danych w miarę usuwania danych z bazy danych.

3

2 or INCREMENTAL

Automatyczne odkurzanie jest włączone, ale należy je aktywować ręcznie. W tym trybie dane referencyjne są zachowane, ale wolne strony są po prostu umieszczane na liście bezpłatnych. Te strony można odzyskać za pomocą rozszerzeniaincremental_vacuum pragma w dowolnym momencie.

cache_size Pragma

Plik cache_sizepragma może pobrać lub tymczasowo ustawić maksymalny rozmiar pamięci podręcznej stron w pamięci. Poniżej znajduje się prosta składnia.

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

Plik pageswartość reprezentuje liczbę stron w pamięci podręcznej. Wbudowana pamięć podręczna stron ma domyślny rozmiar 2000 stron i minimalny rozmiar 10 stron.

case_sensitive_like Pragma

Plik case_sensitive_likepragma steruje rozróżnianiem wielkości liter wbudowanego wyrażenia LIKE. Domyślnie ta pragma jest fałszywa, co oznacza, że ​​wbudowany operator LIKE ignoruje wielkość liter. Poniżej znajduje się prosta składnia.

PRAGMA case_sensitive_like = [true|false];

Nie ma możliwości sprawdzenia aktualnego stanu tej pragmy.

count_changes Pragma

count_changespragma pobiera lub ustawia wartość zwracaną przez instrukcje manipulacji danymi, takie jak INSERT, UPDATE i DELETE. Poniżej znajduje się prosta składnia.

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

Domyślnie ta pragma jest fałszywa i te instrukcje nic nie zwracają. Jeśli ma wartość true, każda ze wspomnianych instrukcji zwróci jednokolumnową, jednowierszową tabelę składającą się z jednej wartości całkowitej wskazującej wiersze, na które operacja ma wpływ.

database_list Pragma

Plik database_listpragma zostanie użyta do wylistowania wszystkich dołączonych baz danych. Poniżej znajduje się prosta składnia.

PRAGMA database_list;

Ta pragma zwróci tabelę z trzema kolumnami z jednym wierszem na otwartą lub dołączoną bazę danych, podającą numer kolejny bazy danych, jej nazwę i skojarzony plik.

kodowanie Pragma

Plik encodingpragma kontroluje sposób kodowania i przechowywania łańcuchów w pliku bazy danych. Poniżej znajduje się prosta składnia.

PRAGMA encoding;
PRAGMA encoding = format;

Wartość formatu może wynosić UTF-8, UTF-16lelub UTF-16be.

freelist_count Pragma

Plik freelist_countpragma zwraca pojedynczą liczbę całkowitą wskazującą, ile stron bazy danych jest obecnie oznaczonych jako wolne i dostępne. Poniżej znajduje się prosta składnia.

PRAGMA [database.]freelist_count;

Wartość formatu może wynosić UTF-8, UTF-16lelub UTF-16be.

index_info Pragma

Plik index_infopragma zwraca informacje o indeksie bazy danych. Poniżej znajduje się prosta składnia.

PRAGMA [database.]index_info( index_name );

Zestaw wyników będzie zawierał po jednym wierszu dla każdej kolumny zawartej w indeksie, podając sekwencję kolumn, indeks kolumn z zawartością tabeli i nazwę kolumny.

index_list Pragma

index_listpragma zawiera listę wszystkich indeksów skojarzonych z tabelą. Poniżej znajduje się prosta składnia.

PRAGMA [database.]index_list( table_name );

Zestaw wyników będzie zawierał jeden wiersz dla każdego indeksu, podając sekwencję indeksu, nazwę indeksu i flagę wskazującą, czy indeks jest unikalny, czy nie.

Journal_mode Pragma

Plik journal_modepragma pobiera lub ustawia tryb dziennika, który kontroluje sposób przechowywania i przetwarzania pliku dziennika. Poniżej znajduje się prosta składnia.

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

Istnieje pięć obsługiwanych trybów dziennika, które przedstawiono w poniższej tabeli.

Sr.No. Wartość i opis firmy Pragma
1

DELETE

To jest tryb domyślny. W tym miejscu po zakończeniu transakcji plik dziennika jest usuwany.

2

TRUNCATE

Plik dziennika jest obcinany do długości zero bajtów.

3

PERSIST

Plik dziennika pozostaje na miejscu, ale nagłówek jest nadpisywany, aby wskazać, że dziennik nie jest już ważny.

4

MEMORY

Rekord dziennika jest przechowywany w pamięci, a nie na dysku.

5

OFF

Nie jest prowadzony żaden zapis dziennika.

max_page_count Pragma

Plik max_page_countpragma pobiera lub ustawia maksymalną dozwoloną liczbę stron dla bazy danych. Poniżej znajduje się prosta składnia.

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

Wartość domyślna to 1 073 741 823, co odpowiada jednej gigabajtowej stronie, co oznacza, że ​​jeśli domyślny rozmiar strony wynosi 1 KB, bazy danych mogą urosnąć do jednego terabajta.

page_count Pragma

Plik page_countpragma zwraca bieżącą liczbę stron w bazie danych. Poniżej znajduje się prosta składnia -

PRAGMA [database.]page_count;

Rozmiar pliku bazy danych powinien wynosić liczba_strony * rozmiar_strony.

page_size Pragma

Plik page_sizepragma pobiera lub ustawia rozmiar stron bazy danych. Poniżej znajduje się prosta składnia.

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

Domyślnie dozwolone rozmiary to 512, 1024, 2048, 4096, 8192, 16384 i 32768 bajtów. Jedynym sposobem zmiany rozmiaru strony w istniejącej bazie danych jest ustawienie rozmiaru strony, a następnie natychmiastowe ODKURZANIE bazy danych.

parser_trace Pragma

Plik parser_tracepragma kontroluje drukowanie stanu debugowania podczas analizowania poleceń SQL. Poniżej znajduje się prosta składnia.

PRAGMA parser_trace = [true|false];

Domyślnie jest ustawiony na false, ale po włączeniu przez ustawienie go na true, parser SQL wydrukuje swój stan podczas analizowania poleceń SQL.

recursive_triggers Pragma

Plik recursive_triggerspragma pobiera lub ustawia funkcję rekurencyjnego wyzwalacza. Jeśli rekurencyjne wyzwalacze nie są włączone, akcja wyzwalacza nie uruchomi innego wyzwalacza. Poniżej znajduje się prosta składnia.

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

schema_version Pragma

Plik schema_versionpragma pobiera lub ustawia wartość wersji schematu, która jest przechowywana w nagłówku bazy danych. Poniżej znajduje się prosta składnia.

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

Jest to 32-bitowa liczba całkowita ze znakiem, która śledzi zmiany schematu. Za każdym razem, gdy wykonywane jest polecenie zmieniające schemat (na przykład CREATE ... lub DROP ...), wartość ta jest zwiększana.

secure_delete Pragma

Plik secure_deletepragma służy do kontrolowania sposobu usuwania treści z bazy danych. Poniżej znajduje się prosta składnia.

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

Domyślna wartość flagi bezpiecznego usuwania jest zwykle wyłączona, ale można to zmienić za pomocą opcji kompilacji SQLITE_SECURE_DELETE.

sql_trace Pragma

Plik sql_tracepragma służy do zrzucania wyników śledzenia SQL na ekran. Poniżej znajduje się prosta składnia.

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

SQLite musi być skompilowany z dyrektywą SQLITE_DEBUG, aby uwzględnić tę pragmę.

synchroniczna Pragma

Plik synchronouspragma pobiera lub ustawia bieżący tryb synchronizacji dysku, który kontroluje, jak agresywnie SQLite będzie zapisywał dane do fizycznej pamięci masowej. Poniżej znajduje się prosta składnia.

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

SQLite obsługuje następujące tryby synchronizacji wymienione w tabeli.

Sr.No. Wartość i opis firmy Pragma
1

0 or OFF

Brak synchronizacji

2

1 or NORMAL

Synchronizuj po każdej sekwencji krytycznych operacji na dysku

3

2 or FULL

Synchronizuj po każdej operacji dysku krytycznego

temp_store Pragma

Plik temp_storepragma pobiera lub ustawia tryb przechowywania używany przez tymczasowe pliki bazy danych. Poniżej znajduje się prosta składnia.

PRAGMA temp_store;
PRAGMA temp_store = mode;

SQLite obsługuje następujące tryby przechowywania.

Sr.No. Wartość i opis firmy Pragma
1

0 or DEFAULT

Użyj wartości domyślnej czasu kompilacji. Zwykle PLIK.

2

1 or FILE

Użyj magazynu opartego na plikach.

3

2 or MEMORY

Użyj pamięci masowej.

temp_store_directory Pragma

Plik temp_store_directorypragma pobiera lub ustawia lokalizację używaną dla tymczasowych plików bazy danych. Poniżej znajduje się prosta składnia.

PRAGMA temp_store_directory;
PRAGMA temp_store_directory = 'directory_path';

wersja_użytkownika Pragma

Plik user_versionpragma pobiera lub ustawia wartość wersji zdefiniowaną przez użytkownika, która jest przechowywana w nagłówku bazy danych. Poniżej znajduje się prosta składnia.

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

Jest to 32-bitowa liczba całkowita ze znakiem, którą może ustawić programista w celu śledzenia wersji.

writable_schema Pragma

Plik writable_schemapragma dostaje lub ustawia możliwość modyfikowania tabel systemowych. Poniżej znajduje się prosta składnia.

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

Jeśli ta pragma jest ustawiona, można tworzyć i modyfikować tabele zaczynające się od sqlite_, w tym tabela sqlite_master. Zachowaj ostrożność podczas korzystania z pragmy, ponieważ może to doprowadzić do całkowitego uszkodzenia bazy danych.