SQLite PRAGMA

SQLite PRAGMA命令是一個(gè)特殊的命令,用于控制SQLite環(huán)境中的各種環(huán)境變量和狀態(tài)標(biāo)志。PRAGMA值可以讀取,也可以根據(jù)需要進(jìn)行設(shè)置。

語法

要查詢當(dāng)前的PRAGMA值,只需提供編譯指示的名稱。

PRAGMA pragma_name;

要為PRAGMA設(shè)置新值,請(qǐng)使用以下語法。

PRAGMA pragma_name = value;

設(shè)置模式可以是名稱,也可以是等效的整數(shù),但是返回的值始終是整數(shù)。

auto_vacuum PRAGMA

auto_vacuum PRAGMA獲取或設(shè)置自動(dòng)真空模式。以下是簡單的語法。

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

以下何處mode可以-

序號(hào)PRAGMA值和說明
1

0 or NONE

Auto-vacuum已禁用。這是默認(rèn)模式,這意味著除非使用VACUUM命令手動(dòng)對(duì)其進(jìn)行清理,否則數(shù)據(jù)庫文件的大小永遠(yuǎn)不會(huì)縮小。

2

1 or FULL

啟用了Auto-vacuum并且它是全自動(dòng)的,當(dāng)從數(shù)據(jù)庫中刪除數(shù)據(jù)時(shí),它允許數(shù)據(jù)庫文件縮小。

3

2 or INCREMENTAL

Auto-vacuum已啟用,但必須手動(dòng)激活。在這種模式下,將保留參考數(shù)據(jù),但是將空閑頁面簡單地放在空閑列表中。這些頁面可以隨時(shí)使用incremental_vacuum pragma。

cache_size Pragma

cache_size編譯可以得到或暫時(shí)設(shè)置在內(nèi)存中的頁面緩存的最大尺寸。以下是簡單的語法。

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

pages值表示高速緩存中的頁面數(shù)。內(nèi)置頁面緩存的默認(rèn)大小為2,000頁,最小大小為10頁。

case_sensitive_like Pragma

case_sensitive_like pragma控制內(nèi)置LIKE表達(dá)式的大小寫敏感。默認(rèn)情況下,此pragma為false,這意味著內(nèi)置的LIKE運(yùn)算符忽略字母大小寫。下面是簡單的語法。

PRAGMA case_sensitive_like = [true|false];

無法查詢此編譯指示的當(dāng)前狀態(tài)。

count_changes Pragma

count_changes pragma獲取或設(shè)置數(shù)據(jù)操作語句(例如INSERT,UPDATE和DELETE)的返回值。以下是簡單的語法。

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

默認(rèn)情況下,此編譯指示為false,并且這些語句不返回任何內(nèi)容。如果設(shè)置為true,則每個(gè)提及的語句將返回一個(gè)單列單行表,該表由單個(gè)整數(shù)值組成,該整數(shù)值指示該操作所影響的行。

database_list Pragma

database_list實(shí)用程序?qū)⒂糜诹谐鏊懈郊訑?shù)據(jù)庫。以下是簡單的語法。

PRAGMA database_list;

該實(shí)用程序?qū)⒎祷匾粋€(gè)三列的表,每個(gè)打開或連接的數(shù)據(jù)庫都有一行,給出數(shù)據(jù)庫序列號(hào),其名稱和關(guān)聯(lián)的文件。

encoding Pragma

encoding pragma控制字符串是如何編碼,并存儲(chǔ)在數(shù)據(jù)庫中的文件。以下是簡單的語法。

PRAGMA encoding;
PRAGMA encoding = format;

格式值可以是UTF-8, UTF-16leUTF-16be之一。

freelist_count Pragma

freelist_count Pragma返回一個(gè)整數(shù),表示許多數(shù)據(jù)庫頁當(dāng)前如何標(biāo)記為空閑和可用的。以下是簡單的語法。

PRAGMA [database.]freelist_count;

格式值可以是UTF-8, UTF-16le或UTF-16be之一。

index_info Pragma

index_info Pragma返回有關(guān)數(shù)據(jù)庫索引的信息。以下是簡單的語法。

PRAGMA [database.]index_info( index_name );

結(jié)果集將為索引中包含的每一列包含一行,以給出列順序,表中包含列索引和列名。

index_list Pragma

index_list Pragma列出與表關(guān)聯(lián)的所有索引。以下是簡單的語法。

PRAGMA [database.]index_list( table_name );

結(jié)果集將為每個(gè)索引包含一行,從而提供索引序列,索引名稱和指示索引是否唯一的標(biāo)志。

journal_mode Pragma

journal_mode Pragma獲取或設(shè)置控制日志文件如何存儲(chǔ)和處理的日志模式。以下是簡單的語法。

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

下表列出了五種受支持的日記模式。

序號(hào)Pragma 值和說明
1

DELETE

這是默認(rèn)模式。在交易結(jié)束時(shí),日記文件被刪除。

2

TRUNCATE

日志文件被截?cái)酁榱阕止?jié)的長度。

3

PERSIST

日記文件保留在原處,但是標(biāo)題被覆蓋以指示日記不再有效。

4

MEMORY

日記記錄保存在內(nèi)存中,而不是磁盤上。

5

OFF

不保留日記記錄。

max_page_count PRAGMA

max_page_count PRAGMA獲取或設(shè)置允許的最大頁數(shù)為數(shù)據(jù)庫。以下是簡單的語法。

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

默認(rèn)值為1,073,741,823,即一個(gè)千兆頁,這意味著,如果默認(rèn)為1 KB頁面大小,則數(shù)據(jù)庫可以增長到1 TB。

page_count PRAGMA

page_count PRAGMA返回的數(shù)據(jù)庫的當(dāng)前頁數(shù)。以下是簡單的語法-

PRAGMA [database.]page_count;

數(shù)據(jù)庫文件的大小應(yīng)為page_count * page_size。

page_size PRAGMA

page_size PRAGMA獲取或設(shè)置數(shù)據(jù)庫頁面的大小。以下是簡單的語法。

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

默認(rèn)情況下,允許的大小為512、1024、2048、4096、8192、16384和32768字節(jié)。更改現(xiàn)有數(shù)據(jù)庫上頁面大小的唯一方法是設(shè)置頁面大小,然后立即對(duì)數(shù)據(jù)庫進(jìn)行VACUUM。

parser_trace PRAGMA

parser_trace PRAGMA指示控制打印調(diào)試狀態(tài),因?yàn)樗馕鯯QL命令。以下是簡單的語法。

PRAGMA parser_trace = [true|false];

默認(rèn)情況下,它設(shè)置為false,但是當(dāng)通過將其設(shè)置為true啟用時(shí),SQL解析器將在解析SQL命令時(shí)打印其狀態(tài)。

recursive_triggers PRAGMA

recursive_triggers PRAGMA獲取或設(shè)置遞歸觸發(fā)功能。如果未啟用遞歸觸發(fā)器,則觸發(fā)器操作將不會(huì)觸發(fā)另一個(gè)觸發(fā)器。以下是簡單的語法。

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

schema_version PRAGMA

schema_version PRAGMA獲取或設(shè)置存儲(chǔ)在數(shù)據(jù)庫頭架構(gòu)版本值。以下是簡單的語法。

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

這是一個(gè)32位帶符號(hào)整數(shù)值,用于跟蹤架構(gòu)更改。每當(dāng)執(zhí)行更改模式的命令(例如CREATE ...或DROP ...)時(shí),此值都會(huì)增加。

secure_delete PRAGMA

secure_delete PRAGMA用于控制如何將內(nèi)容從數(shù)據(jù)庫中刪除。以下是簡單的語法。

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

安全刪除標(biāo)志的默認(rèn)值通常為off,但是可以使用SQLITE_SECURE_DELETE構(gòu)建選項(xiàng)更改該默認(rèn)值。

sql_trace PRAGMA

sql_trace PRAGMA用于轉(zhuǎn)儲(chǔ)SQL跟蹤結(jié)果到屏幕上。以下是簡單的語法。

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

必須使用SQLITE_DEBUG指令編譯SQLite,才能包含此編譯指示。

synchronous PRAGMA

synchronous PRAGMA獲取或設(shè)置當(dāng)前磁盤同步模式,控制如何積極的SQLite將一路寫數(shù)據(jù)到物理存儲(chǔ)。以下是簡單的語法。

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

SQLite支持下表中列出的以下同步模式。

序號(hào)Pragma 值和說明
1

0 or OFF

完全沒有同步

2

1 or NORMAL

在每個(gè)關(guān)鍵磁盤操作序列之后進(jìn)行同步

3

2 or FULL

每次關(guān)鍵磁盤操作后同步

temp_store PRAGMA

temp_store PRAGMA獲取或設(shè)置臨時(shí)數(shù)據(jù)庫文件所使用的存儲(chǔ)模式。以下是簡單的語法。

PRAGMA temp_store;
PRAGMA temp_store = mode;

SQLite支持以下存儲(chǔ)模式。

序號(hào)Pragma 值和說明
1

0 or DEFAULT

使用編譯時(shí)默認(rèn)值。通常是FILE。

2

1 or FILE

使用基于文件的存儲(chǔ)。

3

2 or MEMORY

使用基于內(nèi)存的存儲(chǔ)。

temp_store_directory PRAGMA

temp_store_directory PRAGMA獲取或設(shè)置用于臨時(shí)數(shù)據(jù)庫文件的位置。以下是簡單的語法。

PRAGMA temp_store_directory;
PRAGMA temp_store_directory = 'directory_path';

user_version PRAGMA

user_version編譯指示獲取或設(shè)置存儲(chǔ)在數(shù)據(jù)庫頭中的用戶定義的版本值。以下是簡單的語法。

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

這是一個(gè)32位帶符號(hào)整數(shù)值,開發(fā)人員可以出于版本跟蹤目的設(shè)置該值。

writable_schema PRAGMA

writable_schema編譯獲取或設(shè)置修改系統(tǒng)表的能力。以下是簡單的語法。

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

如果設(shè)置了此編譯指示,則可以創(chuàng)建和修改以sqlite_開頭的表,包括sqlite_master表。使用編譯指示時(shí)請(qǐng)小心,因?yàn)樗赡軐?dǎo)致數(shù)據(jù)庫完全損壞。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清