배치 처리 삽입 문을 작성 중이며 임시 테이블을 사용하여 항목을 직접 루핑하고 삽입 된 각 행에 대해 SCOPE_IDENTITY ()를 호출하는 대신 삽입 된 ID를 추적하려고합니다.
삽입 해야하는 데이터에는 (임시) ID가 다른 테이블에 삽입 해야하는 다른 데이터와 연결되어 있으므로 실제 ID와 임시 ID에 대한 상호 참조가 필요합니다.
이것은 내가 지금까지 가지고있는 것의 예입니다.
-- The existing table
DECLARE @MyTable TABLE (ID INT IDENTITY(1,1), [Name] NVARCHAR(MAX));
-- My data I want to insert
DECLARE @MyInsertData TABLE (ID INT, [Name] NVARCHAR(MAX));
INSERT INTO @MyInsertData ( ID,Name)
VALUES ( -1 , 'bla'),(-2,'test'),(-3,'last');
DECLARE @MyCrossRef TABLE ([NewId] INT, OldId INT);
INSERT INTO @MyTable ( [Name] )
OUTPUT Inserted.ID, INS.ID INTO @MyCrossRef
SELECT [NAME] FROM @MyInsertData INS
-- Check the result
SELECT * FROM @MyCrossRef
문제는 ID를 수락하기 위해 OUTPUT INTO 절을 얻을 수 없다는 @MyInsertData.ID
것과 테이블을 결합하는 다른 트릭을 시도 했지만 아무것도 작동하지 않는 것입니다.