2017-02-20 64 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

在交易开始时,数据库不知道您是否会对其他交易进行更改。在任何情况下,都必须锁定以保持原子性。 –