在 SQLite 中,数据库对象(表、索引、触发器或视图)由对象名称及其所在的数据库名称标识。数据库对象可以驻留在主数据库、临时数据库或附加数据库中。
以下命令的语法:DROP TABLE、DROP INDEX、DROP VIEW、DROP TRIGGER、REINDEX、ALTER TABLE 以及许多其他命令,都允许用户通过其名称或其名称和数据库名称的组合来指定数据库对象。如果未在对象引用中指定数据库,则 SQLite 会在主数据库、临时数据库和所有附加数据库中搜索具有匹配名称的对象。首先搜索临时数据库,然后是主数据库,最后按附加顺序搜索所有附加数据库。引用解析为找到的第一个匹配项。例如
/* Add a table named 't1' to the temp, main and an attached database */ ATTACH 'file.db' AS aux; CREATE TABLE t1(x, y); CREATE TEMP TABLE t1(x, y); CREATE TABLE aux.t1(x, y); DROP TABLE t1; /* Drop table in temp database */ DROP TABLE t1; /* Drop table in main database */ DROP TABLE t1; /* Drop table in aux database */
如果在对象引用中指定了模式名称,则它必须是“main”或“temp”,或者附加数据库的模式名称。与其他 SQL 标识符一样,模式名称不区分大小写。如果指定了模式名称,则仅在该模式中搜索指定的对象。
大多数对象引用只能解析为特定类型的对象(例如,作为 DROP TABLE 语句一部分的引用只能解析为表对象,而不是索引、触发器或视图)。但是,在某些上下文中(例如 REINDEX),对象引用可以解析为多种类型的对象。在数据库模式中搜索命名对象时,始终会忽略类型与引用上下文中无法使用的对象。
此页面上次修改于 2022-01-08 05:02:57 UTC