1. 概述
attach-stmt
表达式
过滤子句
函数参数
排序项
字面量值
over 子句
窗口规范
排序项
抛出函数
select 语句
公共表表达式
复合运算符
连接子句
连接约束
连接运算符
排序项
结果列
表或子查询
窗口定义
窗口规范
类型名称
带符号数字
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