Moh*_*vel 8 sql hierarchical hierarchyid sql-server-2008
我想像这样插入hierarchyId
/ - CEO(根)
/ 1/ - 采购经理/ 2/ - 销售经理
/ 1/1/ - 采购主管/ 2/1/ - 销售主管
这就是我想要使用的层次结构,它是正确的,如果是这样我怎么能这样做,任何人都可以给我一些代码片段.
Jef*_*ata 17
我在搜索有关hierarchyid数据类型的信息时遇到了这个问题,并且认为对于跟我来的其他人也会看到hierarchyid根据问题插入代码的代码会很有趣.
我并不认为这些是插入hierarchyids 的唯一方法,但希望它能帮助那些像我一样没有使用过这种数据类型的人.
使用这个表,
create table OrgChart
(
Position hierarchyid,
Title nvarchar(50)
)
Run Code Online (Sandbox Code Playgroud)
你可以使用Parse直接hierarchyid使用字符串路径插入s:
insert into OrgChart(Position, Title)
values (hierarchyid::Parse('/'), 'CEO'),
(hierarchyid::Parse('/1/'), 'Purchase Manager'),
(hierarchyid::Parse('/1/1/'), 'Purchase Executive'),
(hierarchyid::Parse('/2/'), 'Sales Manager'),
(hierarchyid::Parse('/2/1/'), 'Sales Executive')
Run Code Online (Sandbox Code Playgroud)
并使用以下查询来检查表
select Position.ToString(), * from OrgChart
Run Code Online (Sandbox Code Playgroud)
您还可以使用hierarchyid数据类型方法GetRoot和GetDescendant来构建层次结构.我发现这个方法比较麻烦,但我想如果你以编程方式管理层次结构,那么使用这些方法是必要的.
declare @root hierarchyid,
@id hierarchyid
set @root = hierarchyid::GetRoot()
insert into OrgChart(Position, Title) values (@root, 'CEO')
set @id = @root.GetDescendant(null, null)
insert into OrgChart(Position, Title) values (@id, 'Purchase Manager')
set @id = @root.GetDescendant(@id, null)
insert into OrgChart(Position, Title) values (@id, 'Sales Manager')
select @id = Position.GetDescendant(null, null) from OrgChart where Title = 'Purchase Manager'
insert into OrgChart(Position, Title) values (@id, 'Purchase Executive')
select @id = Position.GetDescendant(null, null) from OrgChart where Title = 'Sales Manager'
insert into OrgChart(Position, Title) values (@id, 'Sales Executive')
Run Code Online (Sandbox Code Playgroud)
绝对检查另一个答案中提供的链接,但希望有这个代码尝试也将有所帮助.
| 归档时间: |
|
| 查看次数: |
7011 次 |
| 最近记录: |