Trong trường hợp đó, tôi sẽ sử dụng SqlBulkCopy
để chèn vào giai đoạn bảng (tức là một bảng trông giống như dữ liệu tôi muốn nhập, nhưng không phải là một phần của các bảng giao dịch chính), và sau đó tại DB đến INSERT
/ SELECT
để chuyển dữ liệu vào bảng thực đầu tiên.
Bây giờ tôi có hai sự lựa chọn tùy thuộc vào phiên bản máy chủ; Tôi có thể thực hiện INSERT
thứ hai / SELECT
sang bảng thực thứ hai hoặc tôi có thể sử dụng INSERT
/ OUTPUT
để thực hiện chèn thứ hai, sử dụng các hàng nhận dạng từ bảng.
Ví dụ:
-- dummy schema
CREATE TABLE TMP (data varchar(max))
CREATE TABLE [Table1] (id int not null identity(1,1), data varchar(max))
CREATE TABLE [Table2] (id int not null identity(1,1), id1 int not null, data varchar(max))
-- imagine this is the SqlBulkCopy
INSERT TMP VALUES('abc')
INSERT TMP VALUES('def')
INSERT TMP VALUES('ghi')
-- now push into the real tables
INSERT [Table1]
OUTPUT INSERTED.id, INSERTED.data INTO [Table2](id1,data)
SELECT data FROM TMP