使用TCL:sqlite的语法错误在内存临时表创建表时(Using TCL: Sqlite synt

2019-10-28 23:17发布

使用TCL和sqlite3的,我想在内存中创建临时表。 尝试此:

package require sqlite3
sqlite3 DB  [file normalize X:\memdbtest.db]

DB eval {
    ATTACH DATABASE ':memory:' AS memdb;
    CREATE TEMP TABLE memdb.values (val TEXT);
}

给我一个错误:近“值”:语法错误此我客串了与“价值观”做的是在sqlite的一个保留关键字。 改变上述代码:

    DB eval {
        ATTACH DATABASE ':memory:' AS memdb;
        CREATE TEMP TABLE memdb.things (val TEXT);
    }

给我的错误“临时表的名称必须是不合格”

但跳过memdb。 在事情面前会把新表在磁盘数据库中的常规....什么是我做错了吗?

Answer 1:

临时表进入临时数据库 (名为temp )。 虽然该数据库存储在磁盘文件,该文件实际上并未写入到缓存溢出(因为是通过碰撞耐用临时数据库不需要)。

如果你想要把表到其它数据库,不使用CREATE TEMP TABLE但正常的CREATE TABLE

CREATE TABLE things([...]);        -- creates the table in the DB "main"
CREATE TABLE memdb.things([...]);  -- creates the table in the specified DB
CREATE TEMP TABLE things([...]);   -- creates the table in the DB "temp"
CREATE TABLE temp.things([...]);   -- creates the table in the DB "temp"


文章来源: Using TCL: Sqlite syntax error when creating table in memory temp table