小巧、快速、可靠。
任選三項。
附加資料庫

1. 概觀

attach-stmt

ATTACH DATABASE expr AS schema-name

expr

ATTACH DATABASE 敘述會將另一個資料庫檔案新增到目前的 資料庫連線。先前已附加的資料庫檔案可以使用 DETACH DATABASE 指令移除。

2. 詳細資料

要附加的資料庫檔案名稱為出現在 AS 關鍵字之前的表達式值。資料庫的檔案名稱遵循與 sqlite3_open()sqlite3_open_v2() 的檔案名稱引數相同的語意;特殊名稱 ":memory:" 會產生 記憶體中資料庫,而空字串會產生新的暫時資料庫。如果資料庫連線已啟用 URI 檔案名稱處理,則檔案名稱引數可以是 URI 檔案名稱。預設行為是停用 URI 檔案名稱,不過這可能會在未來的 SQLite 版本中變更,因此建議應用程式開發人員做好相應的規劃。

AS 關鍵字後的名稱是 SQLite 內部使用的資料庫名稱。架構名稱「main」和「temp」分別指主資料庫和用於暫時性資料表的資料庫。主資料庫和暫時性資料庫無法附加或分離。

可使用語法 schema-name.table-name 參照附加資料庫中的資料表。如果資料表的名稱在所有附加資料庫和主資料庫與暫時性資料庫中都是唯一的,則不需要 schema-name 前綴。如果不同資料庫中的兩個或多個資料表具有相同的名稱,且資料表參照中未使用 schema-name 前綴,則會選擇最近附加的資料庫中的資料表。

涉及多個附加資料庫的事務是原子的,假設主資料庫不是「:memory:」,且 journal_mode 不是 WAL。如果主資料庫是「:memory:」或 journal_mode 是 WAL,則事務會持續在每個個別資料庫檔案中保持原子性。但是,如果主機電腦在 COMMIT 中途當兩個或多個資料庫檔案更新時發生故障,其中一些檔案可能會取得變更,而其他檔案則可能不會。

有一個限制,使用 sqlite3_limit()SQLITE_LIMIT_ATTACHED 設定,限制可以同時附加到單一資料庫連線的資料庫數量。

此頁面最後修改於 2023-12-05 14:43:20 UTC