sql >> Database teknologi >  >> RDS >> Sqlserver

Er det muligt at få PrimaryKey ID'er tilbage efter en SQL BulkCopy?

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


  1. Indstil Oracle 10g databaseforbindelse timeout i Java

  2. DB ORACLE FORESPØRGSEL

  3. SQL Server dynamisk PIVOT-forespørgsel?

  4. Hvordan COERCIBILITY() virker i MariaDB