sql >> Databasteknik >  >> RDS >> Sqlserver

Hur använder jag en INSERT-satss OUTPUT-sats för att få identitetsvärdet?

Du kan antingen få det nyinfogade ID:t att matas ut till SSMS-konsolen så här:

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

Du kan använda detta även från t.ex. C#, när du behöver få tillbaka ID:t till din anropsapp - kör bara SQL-frågan med .ExecuteScalar() (istället för .ExecuteNonQuery() ) för att läsa det resulterande ID tillbaka.

Eller om du behöver fånga det nyligen infogade ID inuti T-SQL (t.ex. för senare vidare bearbetning) måste du skapa en tabellvariabel:

DECLARE @OutputTbl TABLE (ID INT)

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

På så sätt kan du lägga in flera värden i @OutputTbl och göra ytterligare bearbetning av dessa. Du kan också använda en "vanlig" temporär tabell (#temp ) eller till och med en "riktig" beständig tabell som ditt "utgångsmål" här.




  1. Kopiera-klistra problem i SQL Server Management Studio

  2. Vilken MySQL-databasmotor är bättre för att lagra sessioner och sessionsdata:MyISAM eller InnoDB?

  3. Hur visar man poster från en tabell ordnad som i where-satsen?

  4. När jag skapar en post med flera rader får jag felmeddelandet:Kunde inte ta deltagande Okänd kolumn ''FName'' i 'field list'