2012-01-24 4 views
12

나는 select select multiple identities를 사용하여 SQL을 삽입 할 수 있습니까?

INSERT california_authors (au_id, au_lname, au_fname) 
SELECT au_id, au_lname, au_fname 
FROM authors 
WHERE State = 'CA' 

내가 california_authors에 ID 열이 있다고 선택을 사용하여 테이블에 insertnig하고있다. 마지막으로 single insertion에 대해 @@ IDENTITY을 (를) 얻을 수있는 것처럼 위의 특정 삽입으로 삽입 된 모든 ID를 가져올 수 있습니까? 이전에 필터 State = 'CA'

답변

27

당신은 output 절을 사용할 수 있습니다로 기록이 삽입 존재 수 있으므로

나는 california_authors에 대한 선택 명령을 사용할 수 없습니다.

신원 열의 이름이 'IdentityCol'인 경우 ID가 결과 집합으로 반환됩니다.

INSERT california_authors (au_id, au_lname, au_fname) 
OUTPUT inserted.IdentityCol 
SELECT au_id, au_lname, au_fname 
FROM authors 
WHERE State = 'CA' 

output ... into을 사용하여 테이블에 ID를 삽입 할 수 있습니다.
다음은 테이블 변수에 ID를 저장하는 샘플입니다.

declare @IDs table (id int) 

INSERT california_authors (au_id, au_lname, au_fname) 
OUTPUT inserted.IdentityCol INTO @IDs 
SELECT au_id, au_lname, au_fname 
FROM authors 
WHERE State = 'CA' 
+0

이것은 대단합니다 .... 감사합니다. – Umer