避免sqlite3中的行重复



我有一个有14列的表,我想做的是避免插入重复的行,即我不想有两行有相同的14值。使用SELECTWHEREAND子句的组合,我们可以避免在两列中插入重复的行,但我可以对14列应用相同的行吗?这就像有13个AND,我甚至不确定它是否有效。他们还有别的办法吗?我的14列中可能有重复的值,所以让每个人都成为UNIQUE是不可能的。

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

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 . . .);

最新更新