有三个表,Tmain主表,Tdetail细表,TQty数量表
TMain table(recno int,mycode varchar(10)) recno为Key
TDetail Table(recno int,MRecno int,qty int) recno为Key, MRecno为外键,并设置为级联删除。
TQty(mycode varchar(10),tqty int)
TQTy有三个触发器,分级为after insert,after delete,after update.
删除的触发器:
update a
set a.qty = a.qty - b.tqty
from TQty a
inner join
(
select a.mycode,sum(b.qty) tqty from tmain a inner join deleted b on a.recno = b.mrecno
group by a.mycode
) b on a.mycode = b.mycode
在做级联删除时,删除触发器不起作用,查了一下原因是tmain里的记录在作关联时已经关联不出来了。
现在不是很明白,如果在删除时,是如何工作的,是先删除主表中的数据,然后再删除细表中的数据吗?
请大侠帮忙分析一下。
------解决思路----------------------
正常删除肯定是先删明细再删主表,不然主表删了,你都不知道怎么找明细了。
------解决思路----------------------
你的主外键 ,怎么能先删掉住呢?删不掉吧
先删除明细在删除主的。
------解决思路----------------------
先删除明细再删除主表,tmain里的记录在作关联时已经关联不出来了就说明问题了
------解决思路----------------------
所以不推荐用触发器,很多时候触发器会带来一些无法控制的问题。触发器的操作基本都可以在存储过程中通过事务来控制处理。