我是这么写的
CREATE TRIGGER checkstudent ON aaa
FOR insert
AS
declare  @id  numeric  
select  @id=id from inserted  
if exists (select * from aaa a join(select * from inserted) b on a.myid=b.myid  where a.id<>@id)
begin
   raiserror('此学号已存在',16,1)
   delete  from  aaa  where  id=@id
-- rollback transaction
end
结果把重复的插入了

解决方案 »

  1.   

    CREATE TRIGGER checkstudent ON aaa
    FOR insert
    AS
    if exists (select id from aaa a 
    where id in (select id from inserted)
    group by id having count(*)>1)
    begin
       raiserror('此id重复',16,1)
    rollback transaction
    end
      

  2.   

    CREATE TRIGGER checkstudent ON aaa
    FOR insert
    AS
    if exists (select id from aaa a 
    where id in (select id from inserted)
    group by id having count(*)>1)
    begin
       raiserror('有id重复',16,1)
       rollback transaction
    end
      

  3.   

    create trigger tr_insert on 员工信息表
    instead of insert
    as
    insert 员工信息表(id,name)
    select a.id,a.name
    from inserted a left join 员工信息表 b on a.id=b.id
    where b.id is nullif (select count(*) from inserted)>@@rowcount
    RAISERROR('部分数据重复',1,16)
      

  4.   

    邹键看,但是后面的raiserror('部分数据重复',1,16)不执行,不提示,但结果是正确的