0
我有一个14列的表,我想要做的是避免插入重复的行,即我不想有两行具有相同的14个值。结合使用SELECT
,WHERE
和AND
子句,我们可以避免为几列插入重复行,但是我可以对14列应用相同的行吗?这就像有13 AND
它,我甚至不知道它是否会工作或不。他们有任何其他的方式来做到这一点?而我的14栏可以有重复的价值,所以使每个人和每个人都是不可能的。避免在sqlite3中重复行
我有一个14列的表,我想要做的是避免插入重复的行,即我不想有两行具有相同的14个值。结合使用SELECT
,WHERE
和AND
子句,我们可以避免为几列插入重复行,但是我可以对14列应用相同的行吗?这就像有13 AND
它,我甚至不知道它是否会工作或不。他们有任何其他的方式来做到这一点?而我的14栏可以有重复的价值,所以使每个人和每个人都是不可能的。避免在sqlite3中重复行
在桌子上刚刚创建唯一索引:
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 . . .);
如何检查独特性?它会自动工作吗? – user9517536248
@NottyShinchan。 。 。它自动工作。这是一个独特的索引(你可以在这里阅读有关索引http://www.sqlite.org/lang_createindex.html)。 –
所以如果我必须在脚本中写入,我在插入之前或插入之后执行。我的主要动机是与脚本一起使用它。它是用python编写的。你能告诉我“AND”条款的局限吗?我们可以使用多少列? – user9517536248