SQLite - PRAGMA

SQLite PRAGMAperintah adalah perintah khusus yang akan digunakan untuk mengontrol berbagai variabel lingkungan dan bendera negara dalam lingkungan SQLite. Nilai PRAGMA dapat dibaca dan juga dapat diatur berdasarkan kebutuhan.

Sintaksis

Untuk menanyakan nilai PRAGMA saat ini, cukup berikan nama pragma.

PRAGMA pragma_name;

Untuk mengatur nilai baru untuk PRAGMA, gunakan sintaks berikut.

PRAGMA pragma_name = value;

Mode set dapat berupa nama atau padanan bilangan bulat tetapi nilai yang dikembalikan akan selalu berupa bilangan bulat.

auto_vacuum Pragma

Itu auto_vacuumpragma mendapatkan atau menyetel mode vakum otomatis. Berikut ini adalah sintaks sederhana.

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

Dimana mode dapat berupa salah satu dari berikut -

Sr.No. Nilai & Deskripsi Pragma
1

0 or NONE

Penyedot debu otomatis dinonaktifkan. Ini adalah mode default yang berarti bahwa file database tidak akan pernah menyusut ukurannya kecuali secara manual disedot menggunakan perintah VACUUM.

2

1 or FULL

Vakum otomatis diaktifkan dan sepenuhnya otomatis yang memungkinkan file database menyusut saat data dihapus dari database.

3

2 or INCREMENTAL

Penyedot debu otomatis diaktifkan tetapi harus diaktifkan secara manual. Dalam mode ini data referensi dipertahankan, tetapi halaman gratis hanya dimasukkan ke dalam daftar gratis. Halaman-halaman ini dapat dipulihkan menggunakanincremental_vacuum pragma kapan saja.

cache_size Pragma

Itu cache_sizepragma bisa mendapatkan atau menyetel sementara ukuran maksimum cache halaman dalam memori. Berikut ini adalah sintaks sederhana.

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

Itu pagesnilai mewakili jumlah halaman di cache. Cache halaman bawaan memiliki ukuran default 2.000 halaman dan ukuran minimum 10 halaman.

case_sensitive_like Pragma

Itu case_sensitive_likepragma mengontrol sensitivitas huruf dari ekspresi LIKE bawaan. Secara default, pragma ini salah yang berarti operator LIKE bawaan mengabaikan kasus huruf. Berikut ini adalah sintaks sederhana.

PRAGMA case_sensitive_like = [true|false];

Tidak ada cara untuk menanyakan keadaan pragma saat ini.

count_changes Pragma

count_changespragma mendapat atau menyetel nilai kembalian pernyataan manipulasi data seperti INSERT, UPDATE dan DELETE. Berikut ini adalah sintaks sederhana.

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

Secara default, pragma ini salah dan pernyataan ini tidak mengembalikan apa pun. Jika disetel ke true, setiap pernyataan yang disebutkan akan mengembalikan tabel satu kolom, satu baris yang terdiri dari nilai integer tunggal yang menunjukkan baris yang terpengaruh oleh operasi tersebut.

database_list Pragma

Itu database_listpragma akan digunakan untuk mendaftar semua database yang terlampir. Berikut ini adalah sintaks sederhana.

PRAGMA database_list;

Pragma ini akan mengembalikan tabel tiga kolom dengan satu baris per database terbuka atau terlampir memberikan nomor urut database, namanya dan file yang terkait.

pengkodean Pragma

Itu encodingpragma mengontrol bagaimana string dikodekan dan disimpan dalam file database. Berikut ini adalah sintaks sederhana.

PRAGMA encoding;
PRAGMA encoding = format;

Nilai format dapat berupa salah satu dari UTF-8, UTF-16le, atau UTF-16be.

freelist_count Pragma

Itu freelist_countpragma mengembalikan satu bilangan bulat yang menunjukkan berapa banyak halaman database yang saat ini ditandai sebagai gratis dan tersedia. Berikut ini adalah sintaks sederhana.

PRAGMA [database.]freelist_count;

Nilai format dapat berupa salah satu dari UTF-8, UTF-16le, atau UTF-16be.

index_info Pragma

Itu index_infopragma mengembalikan informasi tentang indeks database. Berikut ini adalah sintaks sederhana.

PRAGMA [database.]index_info( index_name );

Kumpulan hasil akan berisi satu baris untuk setiap kolom yang terdapat dalam indeks yang memberikan urutan kolom, indeks kolom dengan tabel dan nama kolom.

index_list Pragma

index_listpragma mencantumkan semua indeks yang terkait dengan sebuah tabel. Berikut ini adalah sintaks sederhana.

PRAGMA [database.]index_list( table_name );

Kumpulan hasil akan berisi satu baris untuk setiap indeks yang memberikan urutan indeks, nama indeks dan bendera yang menunjukkan apakah indeks itu unik atau tidak.

journal_mode Pragma

Itu journal_modepragma mendapatkan atau menyetel mode jurnal yang mengontrol bagaimana file jurnal disimpan dan diproses. Berikut ini adalah sintaks sederhana.

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

Ada lima mode jurnal yang didukung seperti yang tercantum dalam tabel berikut.

Sr.No. Nilai & Deskripsi Pragma
1

DELETE

Ini adalah mode default. Di sini, di akhir transaksi, file jurnal dihapus.

2

TRUNCATE

File jurnal dipotong menjadi panjang nol byte.

3

PERSIST

File jurnal dibiarkan di tempatnya, tetapi tajuknya diganti untuk menunjukkan jurnal tidak lagi valid.

4

MEMORY

Catatan jurnal disimpan di memori, bukan di disk.

5

OFF

Tidak ada catatan jurnal yang disimpan.

max_page_count Pragma

Itu max_page_countpragma mendapatkan atau menyetel jumlah halaman maksimum yang diizinkan untuk database. Berikut ini adalah sintaks sederhana.

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

Nilai defaultnya adalah 1.073.741.823 yang merupakan satu giga-halaman, yang artinya jika ukuran halaman default 1 KB, ini memungkinkan database berkembang hingga satu terabyte.

page_count Pragma

Itu page_countpragma kembali dalam jumlah halaman saat ini dalam database. Berikut ini adalah sintaks sederhana -

PRAGMA [database.]page_count;

Ukuran file database harus page_count * page_size.

page_size Pragma

Itu page_sizepragma mendapatkan atau menyetel ukuran halaman database. Berikut ini adalah sintaks sederhana.

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

Secara default, ukuran yang diizinkan adalah 512, 1024, 2048, 4096, 8192, 16384, dan 32768 byte. Satu-satunya cara untuk mengubah ukuran halaman pada database yang sudah ada adalah dengan mengatur ukuran halaman dan segera VACUUM database.

parser_trace Pragma

Itu parser_tracekontrol pragma mencetak status debugging saat mengurai perintah SQL. Berikut ini adalah sintaks sederhana.

PRAGMA parser_trace = [true|false];

Secara default, ini disetel ke false tetapi ketika diaktifkan dengan menyetelnya ke true, parser SQL akan mencetak statusnya saat mem-parsing perintah SQL.

recursive_triggers Pragma

Itu recursive_triggerspragma mendapat atau menyetel fungsi pemicu rekursif. Jika pemicu rekursif tidak diaktifkan, tindakan pemicu tidak akan mengaktifkan pemicu lain. Berikut ini adalah sintaks sederhana.

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

schema_version Pragma

Itu schema_versionpragma mendapatkan atau menyetel nilai versi skema yang disimpan di header database. Berikut ini adalah sintaks sederhana.

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

Ini adalah nilai integer bertanda tangan 32-bit yang melacak perubahan skema. Setiap kali perintah pengubah skema dijalankan (seperti, CREATE ... atau DROP ...), nilai ini bertambah.

secure_delete Pragma

Itu secure_deletepragma digunakan untuk mengontrol bagaimana konten dihapus dari database. Berikut ini adalah sintaks sederhana.

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

Nilai default untuk tanda hapus aman biasanya tidak aktif, tetapi ini dapat diubah dengan opsi build SQLITE_SECURE_DELETE.

sql_trace Pragma

Itu sql_tracepragma digunakan untuk membuang hasil pelacakan SQL ke layar. Berikut ini adalah sintaks sederhana.

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

SQLite harus dikompilasi dengan direktif SQLITE_DEBUG agar pragma ini dapat disertakan.

sinkronis Pragma

Itu synchronouspragma mendapatkan atau menyetel mode sinkronisasi disk saat ini, yang mengontrol seberapa agresif SQLite akan menulis data hingga ke penyimpanan fisik. Berikut ini adalah sintaks sederhana.

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

SQLite mendukung mode sinkronisasi berikut seperti yang tercantum dalam tabel.

Sr.No. Nilai & Deskripsi Pragma
1

0 or OFF

Tidak ada sinkronisasi sama sekali

2

1 or NORMAL

Sinkronkan setelah setiap urutan operasi disk kritis

3

2 or FULL

Sinkronkan setelah setiap operasi disk kritis

temp_store Pragma

Itu temp_storepragma mendapatkan atau menyetel mode penyimpanan yang digunakan oleh file database sementara. Berikut ini adalah sintaks sederhana.

PRAGMA temp_store;
PRAGMA temp_store = mode;

SQLite mendukung mode penyimpanan berikut.

Sr.No. Nilai & Deskripsi Pragma
1

0 or DEFAULT

Gunakan default waktu kompilasi. Biasanya FILE.

2

1 or FILE

Gunakan penyimpanan berbasis file.

3

2 or MEMORY

Gunakan penyimpanan berbasis memori.

temp_store_directory Pragma

Itu temp_store_directorypragma mendapatkan atau menyetel lokasi yang digunakan untuk file database sementara. Berikut ini adalah sintaks sederhana.

PRAGMA temp_store_directory;
PRAGMA temp_store_directory = 'directory_path';

user_version Pragma

Itu user_versionpragma mendapatkan atau menyetel nilai versi yang ditentukan pengguna yang disimpan di header database. Berikut ini adalah sintaks sederhana.

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

Ini adalah nilai integer bertanda tangan 32-bit, yang dapat ditetapkan oleh pengembang untuk tujuan pelacakan versi.

writable_schema Pragma

Itu writable_schemapragma mendapat atau menetapkan kemampuan untuk mengubah tabel sistem. Berikut ini adalah sintaks sederhana.

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

Jika pragma ini disetel, tabel yang dimulai dengan sqlite_ dapat dibuat dan dimodifikasi, termasuk tabel sqlite_master. Berhati-hatilah saat menggunakan pragma karena dapat menyebabkan korupsi database lengkap.