GUID为主键编号的树形表结构该如何插入数据?

hebaobao19880921 2011-08-01 09:26:49
如果是INT类型为主键的表,我们的树形结构很容易就出来
id name pid
1 xx 0
2 xx 0
3 xx 1
4 xx 2
....

但是我现在的主键是GUID同样的表结构 树形如何显示出来?
...全文
206 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
highpr 2011-08-01
  • 打赏
  • 举报
回复
可以用递归

或者循环加左连接
红魔大卫 2011-08-01
  • 打赏
  • 举报
回复
你在定义一列 子节点指定他的父节点GUID

ID NAME PARENTID
SD DF NULL
DF SD SD
RF FD SD
GE GE DF
NH DF NULL

显示效果如下
效果ID ID Name
1 SD DF
1-1 DF SD
1-2 RF FD
11-1 GE GE
2 NH DF
逗号爱麦蒂 2011-08-01
  • 打赏
  • 举报
回复
如果要排序的话,这位兄弟的说法在理

[Quote=引用 3 楼 cxs861226 的回复:]

跟int型主键一样用 不过楼主需要再加一个排序的字段
[/Quote]
hebaobao19880921 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wxr0323 的回复:]
没懂啥意思

不都是一样吗?

只要parentsID 和ID匹配上
[/Quote]
GUID 不像ID 可以自增长 GUID是唯一的 每次都要new一个.
我刚才是搞不懂 该如和去将ID和PID 插入数据形成树结构 因为每次new一个都是新的ID
这样就是
id name paid
guid1 xx guid2
guid3 xx guid4
..
子夜__ 2011-08-01
  • 打赏
  • 举报
回复
没懂啥意思

不都是一样吗?

只要parentsID 和ID匹配上
cxs99999 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 hebaobao19880921 的回复:]
引用 6 楼 cxs861226 的回复:
id name pid sort
guid1 xx 0 1
guid2 xx 0 2
guid3 xx guid1 1
guid4 xx guid2 1

pid也是guid类型 第一行和第2行 插入0??
[/Quote]
那个发懒 没给改 呵呵 你随便找个不可能出现的GUID格式的guid值写进去 当最高级的父节点就行了
hebaobao19880921 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cxs861226 的回复:]
id name pid sort
guid1 xx 0 1
guid2 xx 0 2
guid3 xx guid1 1
guid4 xx guid2 1
[/Quote]
pid也是guid类型 第一行和第2行 插入0??
cxs99999 2011-08-01
  • 打赏
  • 举报
回复
id name pid sort
guid1 xx 0 1
guid2 xx 0 2
guid3 xx guid1 1
guid4 xx guid2 1
hebaobao19880921 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 cxs861226 的回复:]
跟int型主键一样用 不过楼主需要再加一个排序的字段
[/Quote]举个栗子
truecoffeefox 2011-08-01
  • 打赏
  • 举报
回复
试了试,我记错了
cxs99999 2011-08-01
  • 打赏
  • 举报
回复
跟int型主键一样用 不过楼主需要再加一个排序的字段
hebaobao19880921 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 truecoffeefox 的回复:]
guid同样可以order by,记得结果顺序和插入先后顺序是一致的
[/Quote]

不太明白??
truecoffeefox 2011-08-01
  • 打赏
  • 举报
回复
guid同样可以order by,记得结果顺序和插入先后顺序是一致的
hebaobao19880921 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 cxs861226 的回复:]
引用 19 楼 hebaobao19880921 的回复:
引用 18 楼 cxs861226 的回复:
FolderId FolderName ParentId Sort
158E3A41-600E-427E-814C-D8BC37F506B9 a 00000000-0000-0000-0000-000000000000 1

你这个我明白了 pid随便找一个guid的值 那么我插入第……
[/Quote]
实在很感谢你的帮忙
cxs99999 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 hebaobao19880921 的回复:]
引用 18 楼 cxs861226 的回复:
FolderId FolderName ParentId Sort
158E3A41-600E-427E-814C-D8BC37F506B9 a 00000000-0000-0000-0000-000000000000 1

你这个我明白了 pid随便找一个guid的值 那么我插入第2个的时候 值指向的是FID还是新生成的?
[/Quote]
第2个 是什么 和158E3A41-600E-427E-814C-D8BC37F506B9 一级的吗 一级的FID就是00000000-0000-0000-0000-000000000000 是158E3A41-600E-427E-814C-D8BC37F506B9下级的FID就是158E3A41-600E-427E-814C-D8BC37F506B9
hebaobao19880921 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 cxs861226 的回复:]
FolderId FolderName ParentId Sort
158E3A41-600E-427E-814C-D8BC37F506B9 a 00000000-0000-0000-0000-000000000000 1
[/Quote]
你这个我明白了 pid随便找一个guid的值 那么我插入第2个的时候 值指向的是FID还是新生成的?
cxs99999 2011-08-01
  • 打赏
  • 举报
回复
FolderId FolderName ParentId Sort
158E3A41-600E-427E-814C-D8BC37F506B9 a 00000000-0000-0000-0000-000000000000 1
hebaobao19880921 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 cxs861226 的回复:]
引用 15 楼 hebaobao19880921 的回复:

去试试有问题再来问 自己试的过程中就明白了
[/Quote]
create table t_Folder
(
FolderId uniqueidentifier primary key default(newid()) not null,--唯一标识ID 文件ID
FolderName nvarchar(50) not null,--文件名称
ParentId uniqueidentifier null,--上级文件ID
CreateOn datetime not null,--创建时间
CreateBy UniqueIdentifier default(newid()) not null,--创建人
ModefyOn datetime null,--修改时间
ModefyBy uniqueidentifier default(newid()) not null --修改人

)
GO
这是我的表 你试试 我现在的服务器上已经存在了一个根目录 就是最高节点的文件夹
cxs99999 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 hebaobao19880921 的回复:]
[/Quote]
去试试有问题再来问 自己试的过程中就明白了
hebaobao19880921 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 zminwj 的回复:]
引用 10 楼 hebaobao19880921 的回复:
引用 9 楼 wxr0323 的回复:
没懂啥意思

不都是一样吗?

只要parentsID 和ID匹配上

GUID 不像ID 可以自增长 GUID是唯一的 每次都要new一个.
我刚才是搞不懂 该如和去将ID和PID 插入数据形成树结构 因为每次new一个都是新的ID
这样就是
id name paid
gu……
[/Quote]

可以说的更详细一些吗?GUID以前没用过
加载更多回复(1)
说明: "版本编号 "完成日期 "编写者 "审核者 "说明 " "V0.1 "2015-12-16"鲁信 " "建立本文档框架。 " " " " " " " " " " " " " " " " " " " " " " " " " "字段名 "说明 "类型 "长度 "Default " "字段名 "字段名用途相关说明 "数据类型 " "默认值 " 序列生成器(BaseSequence) "字段名 "说明 "类型 "长度 "Default " "ID "主键,标识 "Int " "默认值 " "Code "GUID "Varchar "50 " " "FullName "名称 "Varchar "100 " " "Prefix "序列号前缀 "Varchar "50 " " "Separator "序列号分隔符 "Varchar "50 " " "Sequence "升序序列 "Int "4 " " "Reduction "倒序序列 "Int "4 " " "Step "步骤 "Int "4 " " "IsVisible "是否显示 "Bit "1 "1 " "Enabled "是否有效 "Bit "1 "1 " "Description "描述 "Nvarchar "800 " " "AddTime "创建时间 "dateTime " " " "AddUserID "创建人ID "Int "4 " " "AddUserName "创建人名称 "Nvarchar "50 " " "AddIP "创建地址 "Varchar "50 " " "ModifyTime "修改时间 "DateTime " " " "ModifyUserID "修改人ID "Int "4 " " "ModifyUserName "修改人名称 "Nvarchar "50 " " "ModifyIP "修改地址 "Varchar "50 " " "IsDelete "删除标识 "Bit "1 " " 数据字典主(BaseDict) "字段名 "说明 "类型 "长度 "Default " "ID "主键,标识 "Int " "默认值 " "ParentID "父节点主键 "Int "4 " " "Code "编号 "Varchar "50 " " "FullName "名称 "Nvarchar "100 " " "TargetTable "目标存储 "Varchar "50 " " "IsTree "树形结构 "Bit "1 " " "UseItemCode "编号字段 "Varchar "50 " " "UseItemName "名称字段 "Varchar "50 " " "UseItemValue "值字段 "Varchar "50 " " "AllowEdit "允许编辑 "Bit "1 " " "AllowDelete "允许删除 "Bit "1 " " "Description "描述 "Nvarchar "800 " " "Enabled "是否有效 "Bit "1 "1 " "SortCode "排序码 "Int "4 " " "AddTime "创建时间 "dateTime " " " "AddUserID "创建人ID "Int "4 " " "AddUserName "创建人名称 "Nvarchar "50 " " "AddIP "创建地址 "Varchar "50 " " "ModifyTime "修改时间 "DateTime " " " "ModifyUserID "修改人ID "Int "4 " " "ModifyUserName "修改人名称 "Nvarchar "50 " " "ModifyIP "修改地址 "Varchar "50 " " "IsDelete "删除标识 "Bit "1 " " 数据字典明细(BaseDictDetail) "字段名 "说明 "类型 "长度 "Default " "ID "主键,标识 "Int " "默认值 " "ParentID "父节点主键 "Int " " " "ItemCode "资源编号 "Varchar "50 " " "ItemName "资源名称 "Nvarchar "100 " " "ItemValue "资源值 "Nvarchar "100 " " "AllowEdit "允许编辑 "Bit "1 " " "AllowDelete "允许删除 "Bit "1 " " "IsPublic "是否公开 "Bit "1 " " "Enabled "是否有效 "Bit "1 " " "SortCode "排序码 "Int "4 " " "Description "描述 "Nvar

62,244

社区成员

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

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

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

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