【问题标题】:WebSQL create viewWebSQL 创建视图
【发布时间】:2014-06-21 07:49:53
【问题描述】:

是否可以在 WebSQL 中使用视图?我认为这是因为它基本上是绝对允许它的 sqlite,但我也可能是错的。我正在尝试在我的本地 sqlite 数据库中创建一个视图,但无论我做什么它都会失败。以下是我迄今为止尝试过的一些事情;

create view my_view as select id, name from my_table where active = 1;
--fails: could not prepare statement (1 no such table: main.my_table)

为什么它在“主”数据库中搜索表“my_table”?我什至不知道“主”数据库。我认为这是默认情况下存在的一些系统数据库。我打开的数据库标记为“my_database”。所有其他 sql 语句似乎都尊重这一点。 “创建视图”是唯一一个看起来像是在打开的数据库之外运行的视图。

create view my_view as select id, name from my_database.my_table where active = 1;
--fails: could not prepare statement (1 view my_view cannot reference objects in database my_database)

这就是让我特别相信“创建视图”语句在打开的数据库之外运行的原因。

create view my_database.my_view as select id, name from my_database.my_table where active = 1;
--fails: could not prepare statement (1 unknown database my_database)

这个最让我困惑。 'my_database' 数据库怎么可能是未知的?我可以向您保证,我正在将此数据库用于很多其他语句,例如选择、插入、更新、删除,并且所有这些语句都运行良好。仅对于“创建视图”,此数据库是未知的。

create view my_database.my_view as select id, name from my_table where active = 1;
--fails: could not prepare statement (1 unknown database my_database)

我什至尝试在“创建视图”之前一次运行这些:

attach 'my_database.db' as my_database;
--fails: could not prepare statement (23 not authorized)

attach 'my_database.sqlite' as my_database;
--fails: could not prepare statement (23 not authorized)

非常感谢任何帮助。谢谢。

【问题讨论】:

    标签: sql database sqlite views web-sql


    【解决方案1】:

    默认数据库(您打开的数据库)始终称为main

    您收到错误“no such table: main.my_table”,因为您的数据库不包含名为 my_table 的表。

    【讨论】:

    • 好的,谢谢你的回答。关于它为什么搜索“主”数据库中的表的任何想法?我没有对主数据库做任何事情。我希望它能够查看我使用 openDatabase() 打开的数据库
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-23
    相关资源
    最近更新 更多