I det scenarie ville jeg bruge SqlBulkCopy
at indsætte i en iscenesættelse tabel (dvs. en, der ligner de data, jeg vil importere, men som ikke er en del af de vigtigste transaktionstabeller), og derefter ved DB til en INSERT
/VÆLG for at flytte dataene ind i den første rigtige tabel.
Nu har jeg to valg afhængigt af serverversionen; Jeg kunne lave endnu en INSERT
/VÆLG til den anden rigtige tabel, eller jeg kunne bruge
INSERT
/OUTPUT
klausul for at gøre den anden indsættelse ved hjælp af identitetsrækkerne fra tabellen.
For eksempel:
-- 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