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的子孙,以此类推。
序号 名称 上级序号 | 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的子孙,以此类推。
FOR DELETE
AS
Delete From Tree Where 上级序号 in (Select 序号 from deleted)
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 --思路很简单,恐怕效率不高,但可以实现