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