T-SQL HIERACHYID.GETREPARENTEDVALUE
来源:互联网 发布:js中的top属性 编辑:程序博客网 时间:2024/05/19 12:23
SELECT NodeId, NodeId.ToString() AS NodeIdPath, dbo.fnGetFullDisplayPath(NodeId) AS NodeIdDisplayPathFROM familyORDER BY NodeLevel, NodeId
NodeId NodeIdPath NodeIdDisplayPath0x / 爷爷0x58 /1/ 爷爷 -> 父亲0x68 /2/ 爷爷 -> 叔叔0x5AC0 /1/1/ 爷爷 -> 父亲 -> 长子0x5B40 /1/2/ 爷爷 -> 父亲 -> 次子0x5AD6 /1/1/1/ 爷爷 -> 父亲 -> 长子 -> 长孙0x5B56 /1/2/1/ 爷爷 -> 父亲 -> 次子 -> 长女0x5B5A /1/2/2/ 爷爷 -> 父亲 -> 次子 -> 次孙
由于叔叔没有子嗣,次子被过继给他.
DECLARE @FamilyToMove hierarchyidDECLARE @OldParent hierarchyidDECLARE @NewParent hierarchyidSELECT @FamilyToMove = NodeId FROM family WHERE familyId = 113 -- 次子SELECT @OldParent = NodeId FROM family WHERE familyId = 11 -- 父亲SELECT @NewParent = NodeId FROM family WHERE familyId = 13 -- 叔叔-- 次子过继给叔叔UPDATE family SET NodeId = @FamilyToMove.GetReparentedValue(@OldParent, @NewParent) WHERE NodeId = @FamilyToMove SELECT NodeId, NodeId.ToString() AS NodeIdPath, dbo.fnGetFullDisplayPath(NodeId) AS NodeIdDisplayPathFROM familyORDER BY NodeLevel, NodeId
NodeId NodeIdPath NodeIdDisplayPath0x / 爷爷0x58 /1/ 爷爷 -> 父亲0x68 /2/ 爷爷 -> 叔叔0x5AC0 /1/1/ 爷爷 -> 父亲 -> 长子0x6B40 /2/2/ 爷爷 -> 叔叔 -> 次子0x5AD6 /1/1/1/ 爷爷 -> 父亲 -> 长子 -> 长孙0x5B56 /1/2/1/ NULL0x5B5A /1/2/2/ NULL
结果显示,叔叔过继了次子, 但是, 他的孩子长女,次孙却成了孤儿. ORPHANT NODES.
呵呵, 显然不成功.
这里需要移动整个SUBTREE.
ROLLBACK TRANSCACTION.
DECLARE @FamilyToMove hierarchyidDECLARE @OldParent hierarchyidDECLARE @NewParent hierarchyidSELECT @FamilyToMove = NodeId FROM family WHERE familyId = 113 -- 次子SELECT @OldParent = NodeId FROM family WHERE familyId = 11 -- 父亲SELECT @NewParent = NodeId FROM family WHERE familyId = 13 -- 叔叔-- 次子过继给叔叔UPDATE family SET NodeId = nodeid.GetReparentedValue(@OldParent, @NewParent) WHERE NodeId.IsDescendantOf(@FamilyToMove) = 1 -- 注意:ISDESCENDANTOF包括次子本人 SELECT NodeId, NodeId.ToString() AS NodeIdPath, dbo.fnGetFullDisplayPath(NodeId) AS NodeIdDisplayPathFROM familyORDER BY NodeLevel, NodeId
NodeId NodeIdPath NodeIdDisplayPath0x / 爷爷0x58 /1/ 爷爷 -> 父亲0x68 /2/ 爷爷 -> 叔叔0x5AC0 /1/1/ 爷爷 -> 父亲 -> 长子0x6B40 /2/2/ 爷爷 -> 叔叔 -> 次子0x5AD6 /1/1/1/ 爷爷 -> 父亲 -> 长子 -> 长孙0x6B56 /2/2/1/ 爷爷 -> 叔叔 -> 次子 -> 次孙0x6B5A /2/2/2/ 爷爷 -> 叔叔 -> 次子 -> 长孙女
这次,成了.
- T-SQL HIERACHYID.GETREPARENTEDVALUE
- T-SQL HIERACHYID.GETANCESTOR
- T-SQL HIERACHYID.GETROOT
- T-SQL
- T-SQL
- T SQL
- T--SQL
- T-sql
- T-SQL
- T-SQL
- T-sql
- t-sql
- T-SQL
- T-SQL
- T-sql
- t-sql
- T-SQL
- T-SQL
- poj1860
- 挖掘技术原因:铁道部售票网站怎么啦?
- 缓冲加载图片的 jQuery 插件 lazyload.js 使用方法详解
- Android中长度单位的区别
- 算法系列之十八:用天文方法计算二十四节气(上) .
- T-SQL HIERACHYID.GETREPARENTEDVALUE
- JDK环境配置
- PHP分页类链接
- 如何编写CGI程序
- 用AutoIT删除新浪微博关注博主-更稳定的方法
- 转载的PCI驱动帖子整理
- 一個挺適合初學者的Ant教程
- Silent Install Oracle 10.2.0.1.0 under CentOS 6
- 计算机基础知识--标准16位I/O设备的ISA总线周期