删除处理触发器(同步删除被删除节点的所有子节点)

View Code
 1 --删除处理触发器(同步删除被删除节点的所有子节点)
 2 
 3 create trigger tr_deletenode on tbc
 4 
 5 for delete
 6 
 7 as
 8 
 9 if @@rowcount=0 return --如果没有满足删除条件的记录,直接退出
10 
11 --查找所有被删除节点的子节点
12 
13 declare @t table(id int,level int)
14 
15 declare @level int
16 
17 set @level=1
18 
19 insert @t select a.id,@level
20 
21 from tbc a,deleted d
22 
23 where a.pid=d.id
24 
25 while @@rowcount>0
26 
27 begin
28 
29     set @level=@level+1
30 
31     insert @t select a.id,@level
32 
33     from tbc a,@t b
34 
35     where a.pid=b.id
36 
37         and b.level=@level-1
38 
39 end
40 
41 delete a
42 
43 from tbc a,@t b
44 
45 where a.id=b.id
46 
47 go
48 
49  
50 
51 --删除
52 
53 delete from tbc where id in(2)
54 
55 select * from tbc
56  

 

posted on 2012-04-19 01:10  comcyd  阅读(171)  评论(0)    收藏  举报

导航