我正在构建一棵树(材料清单样式),并转换一些数据。考虑下表:
材料清单
- BomId
- 父 ID
现在我正在使用 CTE 来填充它:
with BOM as
(
select @@identity as BomId, null as ParentId <some other fields> from MyTable
union all
select @@identity as BomId,
parent.BomId as ParentId,
some other fields
from MyTable2
inner join BOM parent on blabla)
insert into MyTable3
select * from BOM
问题是:@@identity 只会给我在联合之前插入的最后一条记录的身份。
我能做些什么来获得身份?我可以修改 Table3 但不能修改 Table1 或 Table2
row_number()
对于递归查询有未定义的行为,所以我不能在这里使用它。
我知道我可以使用 GUID,这是唯一的选择吗?