我需要使用表t2中包含列Id(int)和Name(varchar)的数据填充包含列Name(varchar)和Hid(hierarchyid)的表t1。同时,t1.Hid需要在填充另一个表的数据时自动递增。我执行以下操作:
DECLARE @hid HIERARCHYID = HIERARCHYID::Parse('/0/');
DECLARE @root HIERARCHYID = HIERARCHYID::Parse('/');
INSERT INTO t1 (Name, Hid)
SELECT t2.Name, @root.GetDescendant(@hid, NULL) FROM t2
但最后我得到了具有相同隐藏的 t1。这是因为在 INSERT 中,添加新条目时,@hid 不会改变,但每次都必须递增。
我明白了:
Name1 /1/
Name2 /1/
Name3 /1/
我需要这个:
Name1 /1/
Name2 /2/
Name3 /3/
有没有办法在 INSERT 中使用 Hid 时增加它?
解决了这个问题。表 t2 有一个 Id 列。它具有独特的意义。我做了以下
t2.Id - 1这样做是为了使t1.Hid与t2.Id相同