sql >> Databasteknik >  >> RDS >> Sqlserver

Är det möjligt att få tillbaka PrimaryKey ID:n efter en SQL BulkCopy?

I det scenariot skulle jag använda SqlBulkCopy att infoga i en stage tabell (dvs. en som ser ut som de data jag vill importera, men som inte är en del av de huvudsakliga transaktionstabellerna), och sedan vid DB till en INSERT /SELECT för att flytta data till den första riktiga tabellen.

Nu har jag två val beroende på serverversionen; Jag skulle kunna göra en andra INSERT /SELECT till den andra riktiga tabellen, eller så kan jag använda INSERT /OUTPUT sats för att göra den andra infogningen, med hjälp av identitetsraderna från tabellen.

Till exempel:

     -- 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


  1. Alla användbara 11g dynamiska prestandavyer

  2. Bästa praxisfråga för MySQL:beställa efter id eller datum?

  3. Använd set i en case-sats i SQL Server

  4. mysql gå med i 3 tabeller