2012-01-24 3 views
12

Tôi insertnig vào một bảng bằng cách sử dụng lựa chọnSQL có thể chèn bằng cách sử dụng chọn nhiều danh tính trả về?

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

nói rằng tôi có một cột sắc trong california_authors. Tôi có thể nhận được tất cả các id được chèn bằng cách chèn cụ thể ở trên giống như tôi có thể nhận được @@ IDENTITY cho lần cuối cùng single insertion không?

tôi không thể sử dụng chọn lệnh cho california_authors vì có thể tồn tại trước đó chèn hồ sơ với bộ lọc State = 'CA'

Trả lời

27

Bạn có thể sử dụng mệnh đề output.

Điều gì đó giống như vậy nếu cột nhận dạng của bạn được đặt tên là 'IdentityCol' sẽ trả về id của bạn dưới dạng tập hợp kết quả.

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

Bạn có thể chèn id vào bảng bằng cách sử dụng output ... into.
Đây là mẫu lưu trữ id trong biến bảng.

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

Điều này thật tuyệt vời .... cảm ơn. – Umer