想在poorders的 INSERT 触发程序里写上为sort自动增加数字,以满足以上要求
不知道怎么写,当新增一个pono时,它的sort 就为1,否则就为同pono的sort再加上1
我试写
CREATE TRIGGER addb ON [dbo].[poorders] 
FOR INSERT
AS
update poorders set ORDER=a.ORDER+1 from inserted b,
(select max(ORDER) from deleted group by orderno where orderno=b.orderno) a
where b.orderno=a.orderno
报错!

解决方案 »

  1.   

    CREATE TRIGGER addb ON [dbo].[poorders] 
    FOR INSERT
    as 
    declare @a varchar(10),@i int,@B varchar (20)
    select @b=name from inserted
    update poorders set @i=case @a when pono then @i+1 else 1 end
    ,cust=@i,@a=pono,@b=name
      

  2.   

    --一次只插入一张单据的话,可以这么做
    CREATE TRIGGER addb ON [dbo].[poorders] 
    FOR INSERT
    AS
    declare @m int
    set @m=0
    update a set @m=sort=@m+1 
      from poorders a,(select max(pono) as pono from inserted) b
    where b.pono=a.pono
      

  3.   

    以上报错!
    订单主档
    poorder:主键为pono
    pono   cust   day
    订单明细档
    pono   sort   goodsid  quantity
    poorders:主键为pono+sort,sort为int型
    当明细增加一条记录(pono)时,它的sort为1,如果之前这(pono)有存在,那么就是以前这订单最大的sort 再加上1
      

  4.   

    终于搞定了,试了很久
    如下
    CREATE TRIGGER addb ON [dbo].[poorders] 
    FOR INSERT
    AS
    update poorders set sort=(select isnull(max(sort),0)+1 from poorders where orderno=a.orderno)
    from poorders ,inserted a
    where (poorders.orderno=a.orderno and poorders.goodsid=a.goodsid)就搞不懂,为什么不用deleted
      

  5.   

    INSERT触发器的deleted是空的
    你的表结构和你的触发器字段对不上
      

  6.   

    你的主键不应该是(orderno,sort),而应该是(orderno,goodsid)
      

  7.   

    对了!主键应该是(orderno,goodsid),后来我改过来了!
    呵呵..pono应该是orderno
    但这样也有问题了!当我调试时如果故意不输入sort,那就没问题,但是如果我又手动输入sort,那么就有问题了!