zoukankan      html  css  js  c++  java
  • 删除部门

    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   ,'青岛市'
    UNION ALL SELECT 5,NULL,'四会市'
    UNION ALL SELECT 6,5   ,'清远市'
    UNION ALL SELECT 7,6   ,'小分市'
    GO
    --删除处理触发器(同步删除被删除节点的所有子节点)
    CREATE TRIGGER tr_DeleteNode ON tb
    FOR DELETE
    AS
    IF @@ROWCOUNT=0 RETURN --如果没有满足删除条件的记录,直接退出
    --查找所有被删除节点的子节点
    DECLARE @t TABLE(ID int,Level int)
    DECLARE @Level int
    SET @Level=1
    INSERT @t SELECT a.ID,@Level
    FROM tb a,deleted d
    WHERE a.PID=d.ID
    WHILE @@ROWCOUNT>0
    BEGIN
        SET @Level=@Level+1
        INSERT @t SELECT a.ID,@Level
        FROM tb a,@t b
        WHERE a.PID=b.ID
            AND b.Level=@Level-1
    END
    DELETE a
    FROM tb a,@t b
    WHERE a.ID=b.ID
    GO
    --删除
    DELETE FROM tb WHERE ID in(2,3,5)
    SELECT * FROM tb
    /*--结果
    ID          PID        Name 
    ---------------- ----------------- ---------- 
    1           NULL      山东省
    --*/
  • 相关阅读:
    第十二周工作总结
    第八周工作总结
    冲刺2
    冲刺1
    用户场景分析
    用户场景分析
    水王在哪
    课堂练习-4个数的和
    《大道至简》第一章读后感
    ELF Format 笔记(三)—— Section Types
  • 原文地址:https://www.cnblogs.com/dodui/p/2054336.html
Copyright © 2011-2022 走看看