我对 HierarchyId 世界非常陌生,并试图在我的 SQLServer 设计中实现 HierarchyId() 并且我的印象是 SQL Server 每个表的每个列只允许一个 Root 节点,如果表已经有一个 Root,我尝试如下node 那么它应该出错或抛出一些警告:
INSERT INTO dbo.TeamHierarchy
( TeamNode, TeamId, TeamNodeName )
VALUES ( HierarchyId::GetRoot(), -- TeamNode - hierarchyid
1, -- TeamId - int
'TeamContainer' -- TeamNodeName - varchar(50)
)
我的假设是基于我阅读的一些线程:
但是,似乎 SQL 服务器在拥有多个根时没有任何问题,因为上面的插入查询工作得非常好,没有任何错误/警告。自从我使用 SQL Server 2012 以来,自 SQL Server 2008 以来有什么变化吗?还是我这边有什么误会?