判断呗,要是有12的就把之前的删掉,然后再插一条。
原理和update没区别.....

解决方案 »

  1.   

    delete info where no=12
    insert into info values(12,99)
      

  2.   


    额...sql server 2005下触发器建立的语法没怎么看懂...用书上的代码一直报错,斑竹能写一下么,菜鸟求救...
      

  3.   

    用触发器实现,create table info
    (no int,grade int)insert into info
     select 12,88
    -- 建触发器
    create trigger tr_info 
    on info instead of insert
    as
    begin
     delete a
      from info a
      inner join inserted b on a.no=b.no
      
     insert into info(no,grade)
      select no,grade from inserted
    end
    -- 插入
    insert into info values(12,99)
    -- 结果
    select * from info
    /*
    no          grade
    ----------- -----------
    12          99(1 row(s) affected)
    */
      

  4.   

    create TRIGGER t ON info
    INSTEAD OF  INSERT 
    as
    IF EXISTS (SELECT 1 FROM INSERTED a INNER JOIN info b ON a.[NO]=b.[no] AND a.grade<>b.grade)
       UPDATE info SET info.grade=b.grade FROM info INNER JOIN INSERTED b ON info.[NO]=b.[no] AND info.grade<>b.grade
    ELSE 
       INSERT INTO info SELECT * FROM INSERTED 
      

  5.   

    对了,我再想问一下,如果是这样呢:
    原来数据:
    no   grade
    12   20----如果这样操作
    insert into info values(12,60)----结果
    no  grade
    12  80触发器该怎样修改?因为我对您刚才那段触发器代码还不是特别理解,所以还不会,请再帮我一下吧!灰常感谢!