小巧、快速、可靠。
三者选其二。
附加数据库

1. 概述

attach-stmt

ATTACH DATABASE expr AS schema-name

表达式

ATTACH DATABASE 语句将另一个数据库文件添加到当前的数据库连接。之前附加的数据库文件可以使用DETACH DATABASE命令移除。

2. 细节

要附加的数据库的文件名是在 AS 关键字之前出现的表达式的值。数据库的文件名遵循与 sqlite3_open()sqlite3_open_v2() 的文件名参数相同的语义;特殊名称 ":memory:" 会生成一个内存数据库,空字符串会生成一个新的临时数据库。如果在数据库连接上启用了 URI 文件名处理,则文件名参数可以是URI 文件名。默认情况下,URI 文件名是禁用的,但在 SQLite 的未来版本中可能会发生变化,因此建议应用程序开发人员相应地进行计划。

AS 关键字之后出现的名称是 SQLite 内部使用的数据库名称。模式名称“main”和“temp”分别指代主数据库和用于临时表的数据库。主数据库和 temp 数据库无法附加或分离。

附加数据库中的表可以使用语法模式名称.表名称引用。如果表名称在所有附加数据库以及主数据库和 temp 数据库中都是唯一的,则不需要模式名称前缀。如果不同数据库中的两个或多个表具有相同的名称,并且在表引用中未使用模式名称前缀,则选择的表是最后附加的数据库中的表。

涉及多个附加数据库的事务是原子的,假设主数据库不是":memory:",并且journal_mode不是WAL。如果主数据库是“:memory:”或 journal_mode 是 WAL,则事务在每个单独的数据库文件中仍然是原子的。但是,如果主机计算机在更新两个或多个数据库文件的COMMIT过程中崩溃,则某些文件可能会获得更改,而其他文件可能不会。

可以使用sqlite3_limit()SQLITE_LIMIT_ATTACHED设置可以同时附加到单个数据库连接的数据库数量的限制。

此页面上次修改于2023-12-05 14:43:20 UTC