SQLITE:插入或忽略每一列

时间:2014-05-05 09:53:05

标签: sqlite insert ignore

我的sqlite命令有问题。 我有一个包含三列的表:Id,user,number。 身份证正在继续。现在,如果我将一个用户和一个数字放在我的列表中,我的应用程序应该比较是否已存在具有此数字的用户。问题是,如果我使用标准的“插入或忽略”命令,Id collumn不是固定的,所以每次都会得到一个新的条目。 那么如果它们相等,可能只有两个比较三列中的两列吗? 或者我是否必须使用临时列表,其中只有两列?

谢谢

2 个答案:

答案 0 :(得分:0)

除非您指定密钥,否则不应使用insert或ignore,如果您的密钥是身份(自动编号),我认为永远不应该这样做。

根据用户和号码使您的表中的记录唯一,您不需要id列,您的主键应该是用户,号码。

如果由于某种原因你不想这样做,并且在这种情况下你要记住,用户,数字不是你的唯一性约束,那么

if not exists(Select 1 From MyTable Where user = 10 and Number = 15) 
  Insert MyTable(user,number) Values(10,15) 

会做这个工作。不是一个SqlLite男孩,所以你可能不得不使用语法并包装转义列名。

答案 1 :(得分:0)

如果新记录违反UNIQUE约束,则INSERT或IGNORE语句将忽略该记录。 这样的约束是为PRIMARY KEY隐式创建的,但您也可以为任何其他列显式创建一个约束:

CREATE TABLE MyTable (
    ID integer PRIMARY KEY,
    User text,
    Number number,
    UNIQUE (User, Number)
);