Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 避免phonegap数据库中的重复行_Sql_Database_Cordova - Fatal编程技术网

Sql 避免phonegap数据库中的重复行

Sql 避免phonegap数据库中的重复行,sql,database,cordova,Sql,Database,Cordova,我有一个只有一列的数据库,它是这样创建的 function populateDB(tx){ tx.executeSql('CREATE TABLE IF NOT EXISTS RESULT(result, UNIQUE(result))'); } 但是,当我想将对象写入表中时,会出现以下错误: 无法执行语句(19约束失败) 该错误仅在我将NOT NULL和主键添加到设置时出现。如果没有它,它会继续在我的数据库中写入重复数据(我在启动phonegap iOS应用程序时用Web服务中的数

我有一个只有一列的数据库,它是这样创建的

function populateDB(tx){
   tx.executeSql('CREATE TABLE IF NOT EXISTS RESULT(result, UNIQUE(result))');  
}
但是,当我想将对象写入表中时,会出现以下错误:

无法执行语句(19约束失败)

该错误仅在我将NOT NULL和主键添加到设置时出现。如果没有它,它会继续在我的数据库中写入重复数据(我在启动phonegap iOS应用程序时用Web服务中的数据填充数据库,因此我希望在数据库级别捕获重复的行)

起初,我只有“主键”,因为错误说明了一些约束,我假设主键必须是“NOTNULL”,将它添加到代码中,我仍然得到了相同的错误

我怎样才能解决这个问题。提前谢谢

编辑:您可能需要知道,我将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
    );
}
编辑:我更新了设置表代码。错误不会发生在每一行上,但对象实际上是唯一的

“如果不存在”是这里的重点。在SQLite查询中使用“IF NOT EXISTS”或“REPLACE”、“IGNORE”等条件时,约束失败

假设您试图创建一个已经存在的表,那么约束(如果已经存在,则不在此处再次创建该表)失败,因此查询失败(您实际上想要的是-您不想复制表对吗?),并给出错误约束失败


您可能会在插入或替换、插入或忽略等操作中遇到类似错误。

主键
强制执行
唯一约束。这就是你在复制品时失败的限制。但是,为了解决您的问题,我们需要知道您是如何插入数据的。一次一行,大容量插入,从另一个表,等等?19,这是某种记录在定义中进行更改后是否删除并重新创建了表
19
约束冲突错误通过为表中已有的数据生成错误基本上达到了您的目的。dhaval,是的,我删除了表,错误发生了。问题出在.save()方法中。对不起打扰你们了@不,这不是唱片,我只听MP3。