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

Hvordan bruger jeg en INSERT-sætnings OUTPUT-sætning til at få identitetsværdien?

Du kan enten få det nyligt indsatte ID til at blive udsendt til SSMS-konsollen sådan her:

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

Dette kan du også bruge fra f.eks. C#, når du har brug for at få ID'et tilbage til din opkaldsapp - udfør bare SQL-forespørgslen med .ExecuteScalar() (i stedet for .ExecuteNonQuery() ) for at læse det resulterende ID tilbage.

Eller hvis du har brug for at fange det nyligt indsatte ID inde i T-SQL (f.eks. til senere videre behandling), skal du oprette en tabelvariabel:

DECLARE @OutputTbl TABLE (ID INT)

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

På denne måde kan du indsætte flere værdier i @OutputTbl og foretag yderligere behandling af dem. Du kan også bruge en "almindelig" midlertidig tabel (#temp ) eller endda en "rigtig" vedvarende tabel som dit "outputmål" her.




  1. Sammenlign tekstforskelle mellem to næsten identiske rækker/tabeller i MySql

  2. Jeg får en Der blev gjort forsøg på at indlæse et program med en forkert formatfejl på et SQL Server-replikeringsprojekt

  3. .NET API til SQL Server Service Broker

  4. PostgreSQL:VACCUM FULL vs pg_dump og gendan