WEBSQL简单插入到填充表中

时间:2014-10-30 14:03:40

标签: mysql sql

似乎无法弄清楚为什么这个简单的陈述不起作用

tx.executeSql("INSERT INTO history SELECT * FROM scan");

如果表历史记录为空且没有多大用处,但如果表历史记录中有任何数据,那么它可以正常工作,那么它就不会执行我必须执行的插入操作:

tx.executeSql("DELETE FROM history", []);
tx.executeSql("INSERT INTO history SELECT * FROM scan");

有什么想法吗?干杯

编辑:

结构是相同的:

tx.executeSql("CREATE TABLE IF NOT EXISTS scan(ID INTEGER NOT NULL PRIMARY KEY, sunum TEXT, binnum TEXT, userid TEXT, added_on DATETIME, upload_on DATETIME)");
tx.executeSql("CREATE TABLE IF NOT EXISTS history(ID INTEGER NOT NULL PRIMARY KEY, sunum TEXT, binnum TEXT, userid TEXT, added_on DATETIME, upload_on DATETIME)");

1 个答案:

答案 0 :(得分:0)

问题在于您尝试将重复的主键值插入History表。根据您的结构,它们都ID列为PRIMARY KEY,不能包含重复值。

尝试指定除该键之外的所有列:

INSERT INTO History
            (sunum, binnum, userid, added_on, upload_on)
SELECT      sunum, binnum, userid, added_on, upload_on
FROM        Scan

但是,查看结构时,ID值不会自动递增。如果您不关心ID的内容,可以将ID列声明为:ID INT NOT NULL AUTO_INCREMENT

如果您需要从另一个表中提取ID,则必须进行upsert或合并到该表中。