2010-11-21 11 views
1

삽입하기 직전에 ID 값을 저장하는 방법과 매핑 테이블에 삽입 한 직후에 새 ID 값을 저장하는 방법이 있습니까? 매핑 테이블은 다른 테이블의 외래 키를 업데이트하는 데 사용됩니다.삽입 전후에 ID를 저장 하시겠습니까?

처음에는 이것이 OUTPUT INTO 절에서 가능하다고 생각했지만 삽입 된 값만 삽입 할 수 있습니다. 작업을 수행하기 위해 OUTPUT 절을 모두 사용하는 방법을 잘 모릅니다. 어쩌면 일종의 하위 쿼리일까요?

어쩌면 너무 복잡하기 때문에 SCOPE_IDENTITY 및 하위 쿼리를 사용하여이를 수행 할 수 있습니다.

도움을 주시면 감사하겠습니다.

p.s. 네, ID를 '예약'(더미 행 삽입 후 DBCC CHECKINDENT 삭제)하고 새로 예약 된 ID와 이전 ID를 매핑 테이블에 저장하고 새 ID로 테이블을 업데이트 한 다음 INSERT_IDENTITIES가 켜져있는 상태에서 삽입 작업을하고 있지만 지저분합니다.

이 내용은 SQL Server 2008 R2에 적용됩니다. 여기

이 작동하지 않는 것입니다 : 당신은 신원이 될 것입니다 무엇을 사전에 알 수 없다

INSERT 
    [SomeTable] 
    OUTPUT 
      INSERTED.[Id], 
      [Id] -- This doesn't work 
     INTO 
      [#mappingTable] 
SELECT 
    (SomeColumns) 
FROM 
    [#someOtherTable]; 

답변

0

그것은 병합 한 Statment와 OUTPUT 절 수행 할 수 있습니다를 업데이트합니다. 아무도이 정보로 응답하지 못했지만 동료가 나를 보여주었습니다.

0

.

OUTPUT 절은 소스 테이블이 아니라 삽입 한 테이블에서만 작동합니다. 나는 이것도 원했고 유용 할 것이다.

그래서, 당신은 단지 삽입 된 테이블을 다시 조회 할 수 있습니다 (아래처럼) 또는 #mappingTable

INSERT 
    [SomeTable] 
SELECT 
    (SomeColumns) 
FROM 
    [#someOtherTable]; 

SELECT 
    ID, stuff 
FROM 
    SomeTable 
+1

Bummer 삽입을 수행하고 새 ID를 반환하는 OUTPUT 절이있는 CTE가있는 매핑 테이블에서 UPDATE를 수행 할 수 없습니까? – user514848

관련 문제