0

我有一个包含 14 列的表,我想要做的是避免插入重复的行,即我不想有两行具有相同的 14 个值。通过SELECT,WHEREAND子句的组合,我们可以避免为几列插入重复的行,但我可以对 14 列应用相同的行吗?这就像有 13 个AND,我什至不确定它是否会起作用。他们还有其他方法吗?而且我的 14 列中可以有重复的值,因此使每个人都UNIQUE无法解决。

4

1 回答 1

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 . . .);
于 2013-08-21T19:09:03.597 回答