我有一个单列数据库并像这样创建它
function populateDB(tx){
tx.executeSql('CREATE TABLE IF NOT EXISTS RESULT(result, UNIQUE(result))');
}
但是,当我想将对象写入表中时,出现错误:
无法执行语句(19 约束失败)
仅当我将 NOT NULL 和 PRIMARY KEY 添加到设置时才会出现错误。没有它,它会一直在我的数据库中写入重复项(我在启动 phonegap iOS 应用程序时使用来自 Web 服务的数据填充数据库,所以我想在数据库级别捕获重复的行)
起初我只有“PRIMARY KEY”,因为错误说明了约束,我假设主键必须是“NOT NULL”,将它添加到代码中,我仍然得到同样的错误。
我该如何解决这个问题。提前致谢
编辑:也许知道我将字符串化的 JSON 对象写入结果列对您来说很重要。
编辑:我在这个函数中插入对象。基本上我是一一做的:
this.save = function(){
db.transaction (function(transaction){
object = $.toJSON(self);
object = encodeURI(object);
transaction.executeSql('INSERT INTO RESULT (result) VALUES ("'+object+'")');
},
errorCB,
successCB
);
}
编辑:我更新了我的设置表代码。错误不会发生在每一行,但对象实际上是唯一的。