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

Jak mohu použít klauzuli OUTPUT příkazu INSERT k získání hodnoty identity?

Můžete buď nechat nově vložené ID vysílat do konzole SSMS takto:

INSERT INTO MyTable(Name, Address, PhoneNo)
OUTPUT INSERTED.ID
VALUES ('Yatrix', '1234 Address Stuff', '1112223333')

Toto můžete použít také např. C#, když potřebujete získat ID zpět do své volající aplikace – stačí provést dotaz SQL pomocí .ExecuteScalar() (místo .ExecuteNonQuery() ), abyste si přečetli výsledné ID zpět.

Nebo pokud potřebujete zachytit nově vložené ID uvnitř T-SQL (např. pro pozdější další zpracování), musíte vytvořit proměnnou tabulky:

DECLARE @OutputTbl TABLE (ID INT)

INSERT INTO MyTable(Name, Address, PhoneNo)
OUTPUT INSERTED.ID INTO @OutputTbl(ID)
VALUES ('Yatrix', '1234 Address Stuff', '1112223333')

Tímto způsobem můžete do @OutputTbl vložit více hodnot a provést na nich další zpracování. Můžete také použít "běžnou" dočasnou tabulku (#temp ) nebo dokonce „skutečnou“ trvalou tabulku jako váš „výstupní cíl“ zde.




  1. Vyberte n náhodných řádků na zadanou skupinu

  2. Dynamická alternativa k pivotu s CASE a GROUP BY

  3. Jak mohu vytvořit rozvrhovou tabulku pro instruktora z vytvořených tabulek

  4. Soubory Playframework evolutions kompatibilní s postgres i h2