Tôi sẽ nhập nhiều hàng dữ liệu từ tệp csv vào cơ sở dữ liệu SQL Server (thông qua ứng dụng web). Tôi cần giá trị id được tạo tự động cho khách hàng.Có cách nào để sử dụng SCOPE_IDENTITY nếu sử dụng câu lệnh chèn nhiều không?
Nếu tôi làm điều này trong một vòng lặp, hiệu suất là rất xấu (nhưng tôi có thể sử dụng SCOPE_IDENTITY()
mà không có bất kỳ vấn đề nào).
Một giải pháp performant hơn sẽ là một cách như thế này:
INSERT INTO [MyTable]
VALUES ('1'), ('2'), ('3')
SELECT SCOPE_IDENTITY()
Có cách nào để có được tất cả các ID được tạo ra và không chỉ là id tạo cuối cùng?
Cảm ơn sự giúp đỡ của bạn!
Trân trọng, Thorsten
Không, 'SCOPE_IDENTITY()' chỉ cung cấp cho bạn giá trị ** IDENTITY' mới nhất ** được chèn vào **. Nhưng bạn có thể kiểm tra mệnh đề 'OUTPUT' của SQL Server .... –
Nhận xét câu trả lời đã xóa của bạn: Tôi nghĩ bạn nên loại bỏ dòng đầu tiên và thay đổi dòng thứ ba thành' sqlBuilder.Append ("OUTPUT INSERTED.autoid")); Không cần phải đặt đầu ra trong một biến bảng nếu bạn muốn đầu ra cho mã máy khách của bạn. –