我的一个表为[pro_categories]
为了实现删除节点时触发删除下级,创建触发器为:
CREATE TRIGGER [dbo].[DeletePcChild] ON [dbo].[pro_categories]
FOR DELETE
AS
BEGIN 
DELETE FROM pro_categories WHERE pcParentID IN(
SELECT pcID from deleted )
END
比如说有节点AAA,AAA下面有子节点BBB,BBB下面有子节点CCC,为什么删除AAA时只能删除BBB,不能同时删除CCC??
也就是说只能触发下级的删除,删除BBB时为什么不能连带触发删除CCC呢?
求高手解答!!

解决方案 »

  1.   

    这时候写触发器不能正着写,因为删去了BB,就找不到CC的父节点BB了!
      

  2.   

    我是FOR DELETE啊,为什么不会在删除BBB之前,再找到CCC呢?那应该怎么写呢,求内幕!
      

  3.   

    我是FOR DELETE啊,为什么不会在删除BBB之前,再找到CCC呢?那应该怎么写呢,求内幕!
      

  4.   

    CSDN高手这么多,没一个能解决这个问题吗?跪求高手出马啊!
      

  5.   

    CREATE TRIGGER [dbo].[DeletePcChild] ON [dbo].[pro_categories]
    FOR DELETE
    AS
    BEGIN   
    ;with cte as(
    select pcid from pro_categories where pcParentid in(select pcID from deleted)
    union all
    select a.pcid from pro_categories a inner join cte b on a.pcParentid=b.pcid
    )delete from pro_categories where pcid in(select pcid from cte) 
    end