sql >> Databáze >  >> RDS >> Sqlserver

Je možné získat ID primárního klíče zpět po hromadném kopírování SQL?

V tomto scénáři bych použil SqlBulkCopy vložit do stagingu tabulku (tj. takovou, která vypadá jako data, která chci importovat, ale není součástí hlavních transakčních tabulek), a poté v DB na INSERT /SELECT přesunout data do první skutečné tabulky.

Nyní mám dvě možnosti v závislosti na verzi serveru; Mohl bych udělat druhý INSERT /SELECT do druhé skutečné tabulky, nebo bych mohl použít INSERT /OUTPUT klauzule k provedení druhého vložení pomocí řádků identity z tabulky.

Například:

     -- 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. Vkládání dat před rokem 1950 v Oracle

  2. Funkce trvá věčnost, než se spustí pro velké množství záznamů

  3. Přístup k typu Custom Object Return z ojdbc6 JDBC Thin Drivers

  4. Počítejte záznamy pro každý měsíc v roce