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