create trigger TR_Delete_pm_WorkCard
on pm_WorkCard
for delete
as
if @@rowcount=0 return
begin tran
update pm_PlanEntry
set FDispatchQty=t4.FDispatchQty - t1.FDispatchQty
from deleted as t2 join pm_WorkCardEntry as t1 on(t1.fparentid=t2.FInterID)
join pm_Plan t3 on(t2.FPlanID=t3.FInterID)
join pm_PlanEntry as t4 on(t3.FInterID=t4.fparentid and t1.FRowID=t4.FRowID)
if @@error=0
commit tran
else
rollback tran表中字段没有问题,触发器能够执行成功,就是得不到预期的效果。
on pm_WorkCard
for delete
as
if @@rowcount=0 return
begin tran
update pm_PlanEntry
set FDispatchQty=t4.FDispatchQty - t1.FDispatchQty
from deleted as t2 join pm_WorkCardEntry as t1 on(t1.fparentid=t2.FInterID)
join pm_Plan t3 on(t2.FPlanID=t3.FInterID)
join pm_PlanEntry as t4 on(t3.FInterID=t4.fparentid and t1.FRowID=t4.FRowID)
if @@error=0
commit tran
else
rollback tran表中字段没有问题,触发器能够执行成功,就是得不到预期的效果。
通过这个语句
select *
from pm_WorkCard as t2 join pm_WorkCardEntry as t1 on(t1.fparentid=t2.FInterID)
join pm_Plan t3 on(t2.FPlanID=t3.FInterID)
join pm_PlanEntry as t4 on(t3.FInterID=t4.fparentid and t1.FRowID=t4.FRowID)能得到数据。
谢谢你,不过应该不是这里,如果把update换成
update pm_PlanEntry
set FDispatchQty=0
就是正确的,因此问题应该不在那里。
pm_WorkCard
你随便取条这个表里面的值,当作你删除的那条,弄个条件,你更新下是不是你的效果???
谢谢你帮我分析,我知道原因了,原因是我应该用instead of 触发器,而不应该用delete触发器。