int sqlite3_keyword_count(void); int sqlite3_keyword_name(int,const char**,int*); int sqlite3_keyword_check(const char*,int);
這些常式提供存取 SQLite 辨識的 SQL 語言關鍵字集合。應用程式可以使用這些常式來判斷是否需要將特定識別符號跳脫(例如,用雙引號括起來),以免造成剖析器混淆。
sqlite3_keyword_count() 介面會傳回 SQLite 理解的不同關鍵字的數量。
sqlite3_keyword_name(N,Z,L) 介面會找到以 0 為基底的第 N 個關鍵字,並使 *Z 指向以 UTF8 表示的該關鍵字,並將關鍵字中的位元組數寫入 *L。 *Z 指向的字串不是以零結尾的。如果 N 在範圍內,sqlite3_keyword_name(N,Z,L) 常式會傳回 SQLITE_OK,如果不在範圍內,則傳回 SQLITE_ERROR。如果 Z 或 L 為 NULL 或無效的指標,則呼叫 sqlite3_keyword_name(N,Z,L) 會導致未定義的行為。
sqlite3_keyword_check(Z,L) 介面會檢查 Z 指向的 L 位元組 UTF8 識別符號是否為關鍵字,如果是則傳回非零值,如果不是則傳回零。
SQLite 使用的剖析器具有容錯性。通常可以將關鍵字用作識別符號,只要這種用法不會導致剖析歧義。例如,SQLite 會接受 "CREATE TABLE BEGIN(REPLACE,PRAGMA,END);" 語句,並建立一個名為 "BEGIN" 的新表格,其中包含三個名為 "REPLACE"、"PRAGMA" 和 "END" 的欄位。儘管如此,最佳實務是避免使用關鍵字作為識別符號。避免關鍵字名稱衝突的常用技巧包括:
請注意,SQLite 理解的關鍵字數量可能取決於編譯時選項。例如,如果使用 -DSQLITE_OMIT_VACUUM 選項編譯 SQLite,則 "VACUUM" 不是關鍵字。此外,未來版本的 SQLite 中可能會新增新的關鍵字。