【问题标题】:Sqlite view across multiple databases跨多个数据库的 Sqlite 视图
【发布时间】:2012-05-02 17:08:52
【问题描述】:

是否可以在附加了其他数据库的 Sqlite 数据库中创建 VIEW(不是临时视图)? 视图应该能够通过连接表访问所有数据库中的数据。

【问题讨论】:

    标签: view sqlite


    【解决方案1】:

    不行,视图必须是临时的,否则会报错:

    sqlite> create view view1 as select * from db2.foo union select * from main.foo;
    Error: view view1 cannot reference objects in database db2
    sqlite> create temp view view1 as select * from db2.foo union select * from main.foo;
    sqlite> select * from view1;
    ...
    

    这是有道理的,因为临时视图是自动创建的 temp 数据库的一部分,该数据库仅存在于当前进程中。

    编辑:

    您可以这样列出临时表和视图(全部存储在自动创建的temp 数据库中):

    sqlite> .headers on
    sqlite> select * from sqlite_temp_master;
    type|name|tbl_name|rootpage|sql
    view|view1|view1|0|CREATE VIEW view1 as select * from db2.foo union select * from main.foo
    

    仅列出视图:

    select * from sqlite_temp_master where type='view';
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多