SQL SERVER 2000 表:
序号      名称      上级序号     |       A
1         A                      |       |——BB
2         AA        1            |        ——AA
3         BB        1            |            |——AAA2
4         AAA1      2            |             ——AAA1
5         AAA2      2            |                  |——AAA1A
6         AAA1A     4            |                         |——AAA1AA
7         AAA1AA    5            |
形成一棵树:
要求外部删除一记录时,通过触发该触发器删除它的所有子孙。比如:我删除了序号为2的记录,那么序号为4、5、6、7的均应该删除。因为序号4、5是2的孩子,而序号6是4的孩子,也是2的子孙,以此类推。

解决方案 »

  1.   

    CREATE TRIGGER [TGR_Del] ON [dbo].[tree] 
    FOR DELETE
    AS
    Delete From Tree Where 上级序号 in (Select 序号 from deleted)
      

  2.   

    CREATE TRIGGER [TGR_DelTree] ON [dbo].[tree] 
    FOR DELETE
    AS
    DECLARE  @t1 table(序号 INT)
    DECLARE  @t2 table(序号 INT)
    insert into @t1 Select  序号 from deletedwhile (select count(*) from tree where 上级序号 in (SELECT 序号 FROM @t1)) <>0
    begin
        insert @t2 select 序号 from tree where 上级序号 in (SELECT 序号 FROM @t1)
        Delete From Tree Where 上级序号 in (Select 序号 from @t1)
        Delete From @t1
        Insert into @t1 select * from  @t2
        Delete From @t2
    end --思路很简单,恐怕效率不高,但可以实现