createtable
tb(id
int,pid
int,name
nvarchar(10
))insert
tb select1,
null,'
山東省'
union
allselect2,
1,'煙台市
'union
allselect4,
2,'招遠市
'union
allselect3,
1,'青島市
'union
allselect5,
null,'
四會市'
union
allselect6,
5,'清遠市
'union
allselect7,
6,'小分市'go
--刪除處理觸發器(同步刪除被刪除節點的所有子節點)
create
trigger
tr_deletenode
ontb
fordelete
asif
@@rowcount=0
return
--如果沒有滿足刪除條件的記錄,直接退出
--查詢所有被刪除節點的子節點
declare
@ttable
(id
int,
level
int)
declare
@level
intset
@level=1
insert
@tselect
a.id,
@level
from
tb a,deleted d
where
a.pid
=d.id
while
@@rowcount
>
0begin
set@level
=@level+1
insert
@tselect
a.id,
@level
from
tb a,@tb
where
a.pid
=b.id
andb.
level
=@level-1
enddelete
afrom
tb a,@tb
where
a.id
=b.id
go--
刪除delete
from
tb where
id in(2
,3,5
)select
*from
tb/*
--結果
id pid name
---------------- ----------------- ----------
1 null 山東省
--*/
實現刪除指定結點及所有子節點的處理觸發器 sql
create table tb id int,pid int,name nvarchar 10 insert tb select 1,null,山東省 union all select 2,1 煙台市 union all select 4,2 招遠市 union all select 3,1 青島市...
同步刪除被刪除節點的所有子節點 BOM節點刪除
create table tb id int,pid int,name nvarchar 10 insert tb select1,null,山東省 union allselect2,1,煙台市 union allselect4,2,招遠市 union allselect3,1,青島市 union ...
查詢指定節點及其所有子節點的函式
測試資料 create table tb id char 3 pid char 3 name nvarchar 10 insert tb select 001 null 山東省 union all select 002 001 煙台市 union all select 004 002 招遠市 uni...