当前位置:Gxlcms > 数据库问题 > 数据库树状结构的关系表的删除方案

数据库树状结构的关系表的删除方案

时间:2021-07-01 10:21:17 帮助过:4人阅读

TRIGGER [dbo].[myFirstTrigger] ON [dbo].[ShareTable] FOR DELETE AS BEGIN --SET NOCOUNT ON; DECLARE @id INT,--分享ID; @customer VARCHAR(200), @tocustomer VARCHAR(200), @taskId VARCHAR(100) --SELECT @id=id,@customer=customer,@tocustomer=tocustomer FROM DELETED; DELETE FROM dbo.ShareTable WHERE customer IN (SELECT tocustomer FROM DELETED) END

  方案3:通过cte递归,查询相关联的数据,他没有递归层级的限制,使用简单方便,此方案为最终确定方案。

            cte的用法主要有2个方面,1是用作一个临时结果集,2是专门用来类似的递归

            具体递归实现代码如下:

 WITH    SimpleRecursive
          AS (
               --基本语句  指定一条记录
              SELECT    id,
                        customer ,
                        tocustomer
               FROM     dbo.ShareTable
               WHERE    customer = 分享人
                        AND tocustomer = 被分享人
                        AND id=1     
               UNION ALL

              --递归语句
             
              SELECT     p.id,
                        p.customer ,
                        p.tocustomer
               FROM     dbo.ShareTable P
                        INNER JOIN SimpleRecursive A ON A.tocustomer = P.customer
                                    
             )
             SELECT id FROM SimpleRecursive   --获取所有匹配id

   

   

数据库树状结构的关系表的删除方案

标签:

人气教程排行