2011-01-06 45 views
11

Tôi có một bảng với một id autoincrement rằng tôi đang làm mộtSQL Server danh sách điều tra chèn

INSERT INTO (...) SELECT ... FROM ... 

Có cách nào cho tôi để có được danh sách của id đó đã được đưa vào? Tôi đã suy nghĩ tôi có thể nhận được id tối đa trước khi chèn sau đó và giả định tất cả mọi thứ ở giữa là mới, nhưng sau đó nếu một hàng được chèn vào từ một nơi khác, tôi có thể gặp vấn đề. Có cách nào thích hợp để làm việc này không?

Tôi đang sử dụng SQL Server 2005

Trả lời

31

Sử dụng mệnh đề output.

DECLARE @InsertedIDs table(ID int); 

INSERT INTO YourTable 
    OUTPUT INSERTED.ID 
     INTO @InsertedIDs 
    SELECT ... 
+0

Tuyệt vời! Bạn tự hỏi liệu có cách nào để trả về @InsertedIDs này cho C# không? – Icerman

+0

tuyệt vời !!! điều này đã cứu tôi khỏi việc khai báo một con trỏ! – Alex

3

Tạo một biến table và sau đó sử dụng mệnh đề OUTPUT vào biến table.

OUTPUT inserted.NameOfYourColumnId INTO tableVariable

Sau đó, bạn có thể SELECT từ biến table của bạn.

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