2017-02-20 61 views
0

我們有幾個對數據庫是相互關聯的,即沒有主數據庫的SQLite?

  • db1a和db1b
  • db2a和db2b
  • db3a和db3b

那裏有db1a和db1b,2a和2b之間的交叉db關節等。

打開sqlite數據庫它們可以被連接,即,它們可以被連接,即,

ATTACH 'db1a' as a; ATTACH 'db1b' as b; 

並且隨後被分離並且在需要時被其他對替換。

但是,應該如何創建數據庫「連接」,因爲最初沒有真正的數據庫要連接到?使用第一個數據庫作爲主數據庫會給它更重要的意義,這是沒有意義的 - 因爲它不可拆卸,所以稍後會有障礙。

我能看到的唯一方法是打開:memory:或臨時('')數據庫連接。有更好的選擇嗎?

回答

1

在沒有更好的選擇的情況下,:memory:是最好的選擇。 (:temp:是一個正常的文件名,在許多操作系統中無效;臨時數據庫將具有空文件名。)

如果您有一些元數據庫列出所有其他數據庫,則可以使用該數據庫。

請注意,當您有多個連接的數據庫時,對其中一個數據庫的任何更改都將涉及多數據庫事務。 因此,如果各種數據庫對與其他數據庫的編號不相關,請考慮爲每對數據庫使用一個新連接。

+0

感謝您指出:temp:glitch - 我的意思是臨時數據庫。是否有理由更改單個數據庫會導致多數據庫事務? – Eiko

+1

在交易開始時,數據庫不知道您是否會對其他交易進行更改。在任何情況下,都必須鎖定以保持原子性。 –