有两个表:
主表:sale_main ( id,rmk)
子表: sale_dtl  ( id,cp,price ,oldprice)
关联字段为id求一触发器:
在录入销售明细资料过程中:cp录入时,可以自动带出oldprice,
当录入price 价格时:
if price >oldprice
 update 
sale_main 
set rmk='否'
where id='产生的ID'
else 
 update 
sale_main 
set rmk='是'
where id='产生的ID'
只要有一行记录成立,都要去更新主表:rmk字段。要在新增,修改时都要进行判断。现在这样触发器写在sale_main 还是sale_dtl。要不要去循环子表每条记录。没写过触发器。请大家帮忙。

解决方案 »

  1.   


    感觉逻辑上有点问题:
    1:cp录入时,可以自动带出oldprice,oldprice如何算出?
    2:如果sale_dtl一次有多条插入,一部分记录price >oldprice,另外一部分price <oldprice,
    那sale_main.rmk要更改为是还是否?
      

  2.   

    oldprice自动带出来,如果sale_dtl一次有多条插入,一部分记录price >oldprice,另外一部分price <oldprice
    这种情况,就会出现sale_main.rmk=‘是’
      

  3.   

    CREATE TRIGGER tupdate_sale_dtl ON sale_dtl
    AFTER insert, update
    AS
    BEGIN update sale_main
    set rmk ='是'
    from inserted i
    where i.id = sale_main.id
    and exists(select 1 from inserted ii,sale_dtl d
    where ii.id = d.id
    and ii.id = sale_main.id
    and d.price > d.oldprice)
    update sale_main
    set rmk ='否'
    from inserted i
    where i.id = sale_main.id
    and  exists(select 1 from inserted ii,sale_dtl d
    where ii.id = d.id
    and ii.id = sale_main.id
    and d.price < d.oldprice)
    END