使用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。前面的事情会将新表放到磁盘数据库的常规数据库中。...我在这里做什么错了?
答案 0 :(得分:1)
临时表进入temporary database(名为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"