oracle数据库树形结构表,某个节点的复制

有这么一个业务需求,需要将树节点进行复制,当然也要复制这个节点下的子节点,截图如下:

首先查询出需要复制的所有节点信息:

SELECT T.*,LEVEL GRADE,CONNECT_BY_ISLEAF ISLEAF FROM TABLE1 T START WITH T.ID = 'HT8A57F0B21AFC7061A15BF2F4BC5F4914' CONNECT BY PRIOR T.ID = T.FJID
String strNewJlid = function.newGuid().substring(3, 10);
				// 循环修改主键值
				for (int i = 0; i < treeList.size(); i++)
				{
					// 记录序号
					String strJlxh = treeList.get(i).get(strTbzj).toString();
					// 父级序号
					String strFjid = treeList.get(i).get("FJID") == null ? "" : treeList.get(i).get("FJID").toString();
					// 层级
					String strGrade = treeList.get(i).get("GRADE").toString();
					
					// 修改jlid
					treeList.get(i).put(strTbzj, strJlxh.substring(0, 27) + strNewJlid);
					if (!"1".equals(strGrade))
					{
						// 修改父级id
						treeList.get(i).put("FJID", strFjid.substring(0, 27) + strNewJlid);
					}
				}

strNewJlid表示一个8位数的随机数,类似SELECT SYS_GUID() FROM DUAL 查询到的树,只是这个是8位的,treeList表示需要复制的数据,strGrade表示树的层级,1表示第一级。

思路就是用一个8位数的随机数,来替换原先数据的id和fjid中的后八位,来作为新的复制出来的数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值