避免在sqlite3中重复行

时间:2013-08-21 19:04:26

标签: sql sqlite rows repeat

我有一个包含14列的表,我想要做的是避免插入重复的行,即我不希望有两行具有相同的14个值。通过SELECTWHEREAND子句的组合,我们可以避免为几列插入重复的行,但是我可以对14列应用相同的行吗?这就好像有13 AND,我甚至不确定它是否会起作用。他们还有其他办法吗?我的14列可能会有重复的值,因此每个人UNIQUE都是不可能的。

1 个答案:

答案 0 :(得分:2)

只需在表格上创建一个唯一索引:

create unique index t_allcols on t(col1, col2, . . . col14);

这将强制所有字段组合都是唯一的(当它们具有值时)。

编辑:

您可以在创建表时创建索引。然后,当您尝试插入新数据时,数据库将自动执行检查。这是验证数据最安全的方法。

如果要在插入数据时进行检查,则可以执行以下操作:

insert into t(col1, . . ., col14)
    select val1, . . ., val14
    where not exists (select 1 from t where col1 = val1 and col2 = val2 and . . .);