同步刪除被刪除節點的所有子節點 BOM節點刪除

2021-08-23 14:53:08 字數 3857 閱讀 3113

create

table

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 山東省

--*/ if

object_id('

tb') is

notnull

drop

table

tb go

create

table

tb(id

int,name

varchar(50

),parentid

int)

goinsert

into

tb select1,

'工具',

0union

allselect2,

'工具1',

1union

allselect3,

'工具2',

1union

allselect4,

'工具3',

1union

allselect6,

'工具21',

2union

allselect7,

'工具311',

3union

allselect8,

'工具211',

6union

allselect9,

'系統',

0union

allselect

10,

'系統1',

9go--2000 寫法

ifobject_id('

dbo.f_getchirdnode()')

isnot

null

drop

function

dbo.f_getchirdnode

gocreate

function

f_getchirdnode(

@idint

)returns

@t_level

table

(id

varchar(3

) ,

level

int)

begin

declare

@level

intset

@level=1

insert

into

@t_level

select

@id,

@level

while

@@rowcount

>

0begin

set@level

=@level+1

insert

into

@t_level

select

a.id ,

@level

from

tb a ,

@t_level

bwhere

a.parentid

=b.id

andb.

level

=@level-1

endreturn

endgo

select

*from

tb a

where

exists

(select

*from

f_getchirdnode(

1) b

where

a.id

=b.id)

--查詢

delete

from

tb where

exists

(select

*from

f_getchirdnode(

1) b

where

tb.id

=b.id)

--刪除

go--

2005

declare

@idint

set@id=1

;with

t as

(select

*from

tb where

id =

@idunion

allselecta.*

from

tb a,t b

where

a.parentid

=b.id

)delete

from

tb where

exists

(select

1from

t where

tb.id

=id)

--刪除

--select * fromt --查詢

select

*from

tbdrop

table

tb

javascript 子節點刪除

1.刪除子節點的時候其餘子節點的下標索引也會發生變化。如刪除了第乙個子節點,則下一子節點會變為第乙個。x document.getelementbyid ret list x.getelementsbytagname a len list.length for i 0 ilist.length也是動...

節點的刪除 同時刪除所有繫結要節點上的物件

1.關於節點的刪除 1.分析 0.scenemanager從節點列表中刪除節點 1.要從父節點中刪除該節點.2.基於ogre設計的設計.scenenode沒有提供銷毀movableobject物件的函式.但是有解綁與遍歷movable的能力.此問題簡單為解綁movable 3.節點上一般都擁有一系列...

查詢節點 操作節點 刪除節點

insertbefore 在指定的已有子節點之前插入新的子節點 ul.insertbefore linew,li2 replacechild 該方法用新節點替換某個子節點 兩個引數 replacechild 要插入的節點,被替換的節點 返回被替換的節點 document.body.newnode v...