2011-01-10 35 views
6

Hi
Im sẽ chèn 10 hàng trong một thời gian bằng một TSQL có sẵn trong máy chủ SQL 2008. Tôi muốn IDENTITY của hàng được chèn. Tôi nghĩ rằng giải pháp dưới đây sẽ làm việc nhưng Im không chắc chắn nếu một số chèn khác xảy ra trong khi im chạy chèn trước đó sẽ ảnh hưởng đến kết quảNhận dạng nhiều lần chèn trong máy chủ sql 2008

INSERT INTO tableA VALUES (1,2), (3,4), (4,5), ....
DECLARE @LastID INT = @@IDENTITY
SELECT TOP(10) ID FROM tableA WHERE ID<[email protected] ORDER BY ID DESC

Trả lời

14

Chỉ cần sử dụng OUTPUT clause - nó có thể hoặc là trở đầu ra cho các ứng dụng, hoặc vào một biến bảng để tiếp tục làm việc.

Ví dụ: truy vấn của bạn sẽ là:

INSERT INTO tableA 
OUTPUT inserted.ID 
VALUES (1,2), (3,4), (4,5), ... 
15

Bạn có thể sử dụng OUTPUT khoản:

DECLARE @tablevar table (ID int); 

INSERT INTO tableA 
OUTPUT INSERTED.ID INTO @tablevar 
VALUES (1,2), (3,4), (4,5), .... 
+0

Wonderful câu trả lời, chính xác những gì tôi cần, nhưng là nó có thể để tránh bảng temp? – Ehsan

+1

@Ehsan - chỉ cần bỏ qua phần 'INTO @ MyTableVar'. –

+0

@Ehsan: Tôi có thể đề nghị bạn chấp nhận câu trả lời của Damien không. –

Các vấn đề liên quan