ツリー (部品表スタイル) を構築し、いくつかのデータを変換しています。次の表を検討してください。
部品表
- 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 は、結合の前に挿入された最後のレコードの ID のみを提供します。
IDを取得するにはどうすればよいですか? Table3 は変更できますが、Table1 または Table2 は変更できません
row_number()
再帰クエリに対して未定義の動作があるため、ここでは使用できません。
GUID を使用できることはわかっていますが、それが唯一のオプションですか?