触发器添加数据不重复例子

--创建表
CREATE TABLE a(
a1 nvarchar(50) NULL,
a2 int NULL
)

 
--查询数据
select * from a
--添加数据
insert into a values('1',2)
--清除数据
truncate table a

--触发器
alter  trigger tri_insert_a
on a
INSTEAD OF insert
as
begin 
  --在插入数据时,检查最新的100条数据里、有多少条重复记录(按a1,a2两个字段检查重复);如果重复记录超过1条,就不再插入数据。
    SELECT * FROM a
 
    INSERT INTO a(a1, a2)
    SELECT I.a1,I.a2
    FROM INSERTED I
    left JOIN
    (
        SELECT TOP(100) a1, a2 FROM a WITH(NOLOCK)
    ) T
    ON i.a1 = i.a1
        AND I.a2 = T.a2
    GROUP BY i.a1, i.a2      
    HAVING COUNT(t.a1) < 1 and count(t.a2)<1
end

  

posted @ 2019-11-06 17:09  流星泪  阅读(466)  评论(0编辑  收藏  举报