表的结构:
表的字段包括ID、ParentId、Name和PathName。Id唯一标示,ParentId父节点的ID,Name表示当前节点名称,PathName表示从根节点到本节点的Name的连接字符串。
问题:
当修改及属性某个节点的Name时,也要把子节点的PathName修改,用存储过程如何实现?
declare @newname varchar(50)
declare @oldname varchar(50)
set @newname = 'aa'
set @oldname= 'bb'
update test1 set Name = REPLACE(PathName,@oldname,@newname)
where name like '%'+@oldname+'%'
不用递归好不好?
另外数据库设计的个人觉得有点问题
id是唯一的,应该也是identity列吧 且还是主键吧
为什么path不把 id 串联起
而选择 将可变的 name 属性来串联 ??
哦 也是 菜鸟,,说的不到的 还请谅解
只想告诉楼主,其实存储过程也是支持递归的。这样的提示我想足够了吧?!
表示,我干这事也是用存储过程递归,哈哈~
可以添加数据库自定义函数啊! function xx 妥妥的。调函数就行。while循环!你值得拥有!
;with dtr as( select a from table1 union all select a from dtr)select * from dtr
这样写对吗?最近刚看到这样的形式
把ID串起来才是对的,这个NAME本来就有可能经常改,但是ID是不会变的。