Small. Fast. Reliable.
Choose any three.

在SQLite中,数据库对象(表,索引,触发器或视图)由对象名称和它所在的数据库的名称标识。数据库对象可以位于主数据库,临时数据库或数据库中。一个附加的数据库

DROP TABLEDROP INDEXDROP VIEWDROP TRIGGERREINDEXALTER TABLE和许多其他命令 的语法都允许用户仅通过名称或通过名称和名称的组合指定数据库对象它的数据库。如果未将任何数据库指定为对象引用的一部分,则SQLite将在主数据库,临时数据库和所有附加数据库中搜索具有匹配名称的对象。首先搜索临时数据库,然后搜索主数据库,再搜索所有连接的数据库,顺序为连接的顺序。参考解析为找到的第一个匹配项。例如:

      / *在临时数据库,主数据库和连接的数据库中添加一个名为“ t1”的表* /
      ATTACH'file.db'AS aux;
      创建表t1(x,y);
      创建温度表t1(x,y);
      创建表aux.t1(x,y);

      拖放表t1; / *在临时数据库中删除表* /
      拖放表t1; / *在主数据库中删除表* /
      拖放表t1; / *在aux数据库中删除表* /

如果将模式名称指定为对象引用的一部分,则它必须是“ main”或“ temp”或附加数据库的模式名称。与其他SQL标识符一样,架构名称也不区分大小写。如果指定了架构名称,则仅在一个架构中搜索命名对象。

大多数对象引用只能解析为特定类型的对象(例如,作为DROP TABLE语句一部分的引用只能解析为表对象,而不能解析为索引,触发器或视图)。但是,在某些情况下(例如REINDEX),对象引用可以解析为不止一种类型的对象。在数据库模式中搜索命名对象时,总是会忽略在引用上下文中无法使用的类型的对象。