有两个表:
主表: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。要不要去循环子表每条记录。没写过触发器。请大家帮忙。
主表: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:cp录入时,可以自动带出oldprice,oldprice如何算出?
2:如果sale_dtl一次有多条插入,一部分记录price >oldprice,另外一部分price <oldprice,
那sale_main.rmk要更改为是还是否?
这种情况,就会出现sale_main.rmk=‘是’
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