2014-10-30 1 views
0

Не могу понять, почему это простое утверждение не работаетWebSQL простой вставки в населенной таблицу

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

Он работает правильно, если история таблица пуста, которая не много пользы, но если стол история имеет какие-либо данные, тогда она не выполняет вставку, которую я должен сделать:

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

Любые идеи? Приветствия

Edit:

структуры одинаковы:

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)"); 
+0

Какое сообщение об ошибке вы получаете? – Incognito

+0

таблицы 'scan' и' history' имеют одинаковое количество и тип столбцов? –

+0

Каковы структуры столбцов двух таблиц? Какие ограничения у вас есть в таблице «История»? – Siyual

ответ

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 или слить в эту таблицу.

+0

Огромное спасибо, что вы были на месте! –

Смежные вопросы