按A和B跟插入的记录比较作为比较条件,找到D的值,会找到三条记录的
----------------------------------------------------------------------
比较的规则?

解决方案 »

  1.   

    回;wangtiecheng(cappuccino) 是作为查询条件也谢谢LGame(JGame)
      

  2.   

    对不起.我没讲清楚..先讲这个吧:AAA
    字段A,B,C,D
    当插入数据时,C的值 <-1 时,如"-3"
    将这条数据拆分为三条记录插入到AAA,将三条记录中C的值都修改为-1
      

  3.   

    --试试CREATE TABLE tb(a int,b int,c int,d int)
    INSERT tb SELECT 1,1,1,1
    UNION ALL SELECT 1,1,1,1
    UNION ALL SELECT 1,1,1,1
    UNION ALL SELECT 1,1,1,1
    go
    if exists(select 1 from sysobjects where id=object_id(N'dbo.t_tb') and xtype='TF')
    drop trigger t_tb
    go
    create trigger t_tb on tb
    instead of insert
    as
      declare @i int
      select @i= d from inserted
      if @i>=0 insert tb select * from inserted
      if @i<-1 
      begin
      set @i=abs(@i)
      while @i>0 
      begin 
    insert tb select i.a,i.b,i.c,-1 from inserted i
    set @i=@i-1
      end
      end
    goinsert tb select 114,114,114,-2
    select * from tb--删除测试数据
    drop trigger t_tb
    drop table tb
      

  4.   

    感谢 mislrb ,第一个问题是这样的...
    接上面的代码:
    使用:
    select d from tb where a = i.a And b=i.b
    会得到二条记录...
    现在要将这二条记录中的d的值取出来.
    insert tb select i.a,i.b,-1,刚才查询到的D的值 from inserted i
      

  5.   

    晕,这个D值不都是一样的吗?
    已经插进去了。
    举个例子:(改变一下字段,将C与D互换,来符合楼主的表结构)insert tb select 114,114,-2,114
    这里D=114的,在触发器里D的值都是114啊,还要再取吗?是不是我理解有错??
      

  6.   

    D的值要是select d from tb where a = i.a And b=i.b
    查询出来的已经存在表中的记录
      

  7.   

    create trigger t_tb on tb
    instead of insert
    as
      declare @i int,@d int
      select @i= c from inserted
      select @d=d from tb a,inserted i where a.a = i.a And a.b=i.b
      if @i>=0 insert tb select * from inserted
      if @i<-1 
      begin
      set @i=abs(@i)
      while @i>0 
      begin 
    insert tb select i.a,i.b,-1,@d from inserted i
    set @i=@i-1
      end
      end
    go