主表 A (id,rmk)
子表 A_dtl( id,cp,price ,oldprice)
主表与子表关联字段为:id现求一触发器:当录入或者修改子表时,要往主表写字段。
条件为:if (price >oldprice)
update A
set rmk='否'
from A ,A_dtl
where A.id=A_dtl.idif (price <oldprice)
update A
set rmk='是'
from A ,A_dtl
where A.id=A_dtl.id要求:
在新增时,要去循环判断子表每一件记录:只有有一条记录price <oldprice,这张单据就要rmk='是',反之:rmk='否';在修改时,要去循环判断子表每一件记录:只有有一条记录price <oldprice,这张单据就要rmk='是'。反之:rmk='否'
是不是要用启用循环语句进行判断。

解决方案 »

  1.   

    这个在前台做好做啊。
    触发器里用EXISTS来判断
      

  2.   

    但现在只能在能过触发器做,高手出招:Declare @price decimal(18,4)
    Declare @oldprice decimal(18,4)
    declare  @flag varchar(10)
    DECLARE curror CURSOR FOR 
    SELECT @price=iTaxUnitPrice, @oldprice=fcusminprice FROM Inserted FOR READ ONLY
    OPEN curror
    FETCH NEXT FROM curDis INTO @price,@oldprice
    While @@FETCH_STATUS>=0 
    Begin
       if @price<@oldprice
       set @flag='是'
           ----要跳出来????   else
    -----只有全部满足 @price>@oldprice
        set @flag='否'FETCH NEXT FROM curDis INTO @price,@oldprice
    End
    CLOSE curror
    DEALLOCATE curror----最后去更新A表update A
    set rmk=@flag
    where A.id='''''
      

  3.   


    create trigger t_dtl on A_dtl
    for insert,update
    as
    update A
    set a.rmk = '是'
    from A a,inserted b
    where a.id = b.id and a.oldprice > b.price--try
      

  4.   


    create trigger t_dtl on A_dtl
    for insert,update
    as
    update A
    set a.rmk = (case when exists(select 1 from A_dtl where id = a.id and price<oldprice) then '是' else '否' end)
    from A a,inserted b
    where a.id = b.id