【sql server】 无限级的实体删除

cupsBing 2011-06-23 10:17:21
我的表是一个无限级的,我想删除一个实体,但是此实体下面还有好多个实体的实体,采用递归方法,请高人帮忙写一下
...全文
94 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
罗马和尚 2011-06-23
  • 打赏
  • 举报
回复
我以前要删一个用户(一个表),删除用户同时,也要删除这个用户创建的商家(一个表),删除这个商家,也要删除这个商家的图片(一个表),同时还要删除这个商家的商品(一个表),同时还要删除商品的图片(一个表),同时还要删除这个商家的商品评论(一个表),....这样的花就同时删了好6个表数据...lz是要这样吗?
cupsBing 2011-06-23
  • 打赏
  • 举报
回复
求解啊
cupsBing 2011-06-23
  • 打赏
  • 举报
回复
来帮忙解决下吧
cupsBing 2011-06-23
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xuexiaodong2009 的回复:]

使用级联删除
[/Quote]
能给个例子?
xuexiaodong2009 2011-06-23
  • 打赏
  • 举报
回复
使用级联删除
子夜__ 2011-06-23
  • 打赏
  • 举报
回复
DEMO
/* 
标题:查询指定节点及其所有父节点的函数
作者:爱新觉罗.毓华(十八年风雨,守得冰山雪莲花开)
时间:2008-05-12
地点:广东深圳
*/

create table tb(id varchar(3) , pid varchar(3) , name varchar(10))
insert into tb values('001' , null , '广东省')
insert into tb values('002' , '001' , '广州市')
insert into tb values('003' , '001' , '深圳市')
insert into tb values('004' , '002' , '天河区')
insert into tb values('005' , '003' , '罗湖区')
insert into tb values('006' , '003' , '福田区')
insert into tb values('007' , '003' , '宝安区')
insert into tb values('008' , '007' , '西乡镇')
insert into tb values('009' , '007' , '龙华镇')
insert into tb values('010' , '007' , '松岗镇')
go

--查询指定节点及其所有父节点的函数
create function f_pid(@id varchar(3)) returns @t_level table(id varchar(3))
as
begin
insert into @t_level select @id
select @id = pid from tb where id = @id and pid is not null
while @@ROWCOUNT > 0
begin
insert into @t_level select @id select @id = pid from tb where id = @id and pid is not null
end
return
end
go

--调用函数查询002(广州市)及其所有父节点
select a.* from tb a , f_pid('002') b where a.id = b.id order by a.id
/*
id pid name
---- ---- ----------
001 NULL 广东省
002 001 广州市

(所影响的行数为 2 行)
*/

--调用函数查询003(深圳市)及其所有父节点
select a.* from tb a , f_pid('003') b where a.id = b.id order by a.id
/*
id pid name
---- ---- ----------
001 NULL 广东省
003 001 深圳市

(所影响的行数为 2 行)
*/

--调用函数查询008(西乡镇)及其所有父节点
select a.* from tb a , f_pid('008') b where a.id = b.id order by a.id
/*
id pid name
---- ---- ----------
001 NULL 广东省
003 001 深圳市
007 003 宝安区
008 007 西乡镇

(所影响的行数为 4 行)
*/

drop table tb
drop function f_pid
cupsBing 2011-06-23
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 shenming6923 的回复:]

我以前要删一个用户(一个表),删除用户同时,也要删除这个用户创建的商家(一个表),删除这个商家,也要删除这个商家的图片(一个表),同时还要删除这个商家的商品(一个表),同时还要删除商品的图片(一个表),同时还要删除这个商家的商品评论(一个表),....这样的花就同时删了好6个表数据...lz是要这样吗?
[/Quote]
不是这样的,我的是一张表,比如说:
服装-
上衣-
衬衣-
A衬衣
B衬衣
T恤-
AT恤
BT恤
裤子
短裤-
内裤-
鞋子-
凉鞋-
布鞋-
如果我删除了上衣,那么上衣下面的所有的子分类全部删除

62,072

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧