Navicat中的SQLite临时表

3
我使用Navicat和以下命令在sqlite中创建临时表:
create temp table search as select * from documents

然后当我尝试查询时:

select * from search

I got:

no such table: temp.sqlite_master

或者:

no such table

表格也没有出现在表格列表中,但当我尝试重新创建它时,会收到以下提示:
table search already exists

什么问题?是来自 Navicat 吗?
3个回答

2
您的创建语句看起来对我来说是正确的。当您创建临时表时,它会在关闭用于创建表的连接字符串时被删除。您是否在创建表后关闭连接,然后在发送查询时再次打开它?
如果没有,请包含您的查询语句。

不,即使在同一个查询窗口中创建它,我关闭并重新打开后仍然可以再次创建它。 - Ali

1

这就像是Navicat附带的SQLite DLL中的一个bug。在其他地方测试过,没有问题。


0

SQLite的文档对CREATE TABLE进行了如下说明:

如果指定了数据库名称,则必须是"main"、"temp"或已附加数据库的名称。在这种情况下,新表将被创建在指定的数据库中。如果在"CREATE"和"TABLE"之间出现"TEMP"或"TEMPORARY"关键字,则新表将被创建在临时数据库中。除非指定的数据库名称为"temp",否则同时指定数据库名称和TEMP或TEMPORARY关键字是错误的。如果未指定数据库名称并且未出现TEMP关键字,则表将被创建在主数据库中。

也许您应该通过temp前缀访问表,例如:temp.search


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接