限制重复记录同时插入表中

时间:2019-07-30 09:18:03

标签: sql-server

如何在不使用主键和唯一约束的情况下限制重复数据插入表中?

id  dat
----------------------------
1   2019-07-30 14:30:13.830
2   2019-07-30 14:30:13.830
3   2019-07-30 14:31:22.587
4   2019-07-30 14:31:51.633
5   2019-07-30 14:34:35.040
5   2019-07-30 14:34:35.040

此处同时插入ID为5的记录

declare @id int = 5

if(@id in (select id from ##time))
    print 'already exists'
else
    insert into ##time values (@id, getdate()), (@id, getdate())

我试图限制重复数据,但是问题在于它不能同时插入重复记录

2 个答案:

答案 0 :(得分:1)

您可以尝试向dat列添加唯一约束:

ALTER TABLE time ADD CONSTRAINT cnstr_dat UNIQUE (dat);

这将防止插入重复的记录。

答案 1 :(得分:0)

您可以尝试...

  insert into yourtable (id, dat)
  select distinct id, dat from #temp where id not in (select id from yourtable)

这将防止插入任何重复的ID,同时选择未插入ID的不同记录