sqlite 3中的数据库角色切换

时间:2014-11-06 07:06:00

标签: database sqlite

我正在开发一些应用程序(遗留代码),它基本上会扫描设备中的歌曲并提供浏览功能。

现在,为了提高某些功能的性能,要求是使用3个数据库,如下所示,带有角色:

enter image description here

我正在使用 sqlite3 ,我正在打开一个数据库会话并附加其他两个数据库。

现在,如果您在没有附加别名的情况下触发SQL查询,请说SELECT * FROM songs;,它会选择别名为 main 的数据库。

旧版浏览器模块具有所有类似的SQL查询(未附加数据库别名,我无法更改它们,因此他们将继续使用别名为main的数据库。

解决方案是在需要时将别名main更改为适当的数据库。

我的问题是:

  1. 我可以将别名 main 分配给附加数据库(一次一个)吗?如果是,怎么样?
  2. 或者是否有更好的解决方案以便我可以更改使用的默认数据库?

1 个答案:

答案 0 :(得分:2)

无法更改已连接数据库的数据库名称(包括main)。

然而,documentation说:

  

如果不同数据库中的两个或多个表具有相同的名称且未在表引用上使用database-name前缀,则所选表是数据库中最近最少附加的表。

所以你可以做的是打开一些空数据库作为主数据库(只需使用:memory:),并按所需顺序连接其他三个数据库。