У меня есть база данных с одного столбца и создать его как этотИзбегайте повторяющихся строк в базе PhoneGap
function populateDB(tx){
tx.executeSql('CREATE TABLE IF NOT EXISTS RESULT(result, UNIQUE(result))');
}
однако, когда я хочу писать объекты в таблицу, я получаю ошибку:
could not execute statement (19 constraint failed)
Ошибка появляется, когда я добавляю NOT NULL и PRIMARY KEY к настройке. Без него он продолжает писать дубликаты в моей базе данных (я заполняю базу данных данными из веб-службы при запуске приложения iOS для телефонных разговоров, поэтому я хочу поймать повторяющиеся строки на уровне базы данных)
Сначала у меня был только «ПЕРВИЧНЫЙ KEY ", и поскольку ошибка говорит что-то о ограничениях, я предполагал, что первичный ключ должен быть« NOT NULL », добавив его в код, я все равно получаю ту же ошибку.
как я могу это решить. заранее спасибо
Редактировать: Может быть, вам важно знать, что я пишу stringyfied объекты JSON в столбец результатов.
Редактировать: Я вставляю объект в эту функцию. В принципе я это делаю один за другим:
this.save = function(){
db.transaction (function(transaction){
object = $.toJSON(self);
object = encodeURI(object);
transaction.executeSql('INSERT INTO RESULT (result) VALUES ("'+object+'")');
},
errorCB,
successCB
);
}
редактировать: Я обновил свой настроить код таблицы. Ошибка не возникает в каждой строке, но объекты на самом деле уникальны.
'ОСНОВНОЙ KEY' навязывает' UNIQUE CONSTRAINT'. Таким образом, это ограничение, с которым вы сталкиваетесь с дубликатами. Однако, чтобы решить вашу проблему, нам нужно знать, как вы вставляете свои данные. Одна строка за раз, объемная вставка, из другой таблицы и т. Д. И т. Д.? – MatBailie
19 Это какой-то рекорд? : P –
вы упали и воссоздали свою таблицу после внесения изменений в определение? Ошибка нарушения ограничений 19 в основном служит вашей цели, генерируя ошибку для данных, которые уже есть в таблице. – dhaval