sql >> Database >  >> RDS >> Sqlserver

Hoe gebruik ik de OUTPUT-clausule van een INSERT-instructie om de identiteitswaarde te krijgen?

U kunt de nieuw ingevoerde ID als volgt naar de SSMS-console laten gaan:

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

U kunt deze ook gebruiken van b.v. C#, wanneer u de ID terug wilt naar uw aanroepende app - voer gewoon de SQL-query uit met .ExecuteScalar() (in plaats van .ExecuteNonQuery() ) om de resulterende ID . te lezen terug.

Of als u de nieuw ingevoegde ID moet vastleggen binnen T-SQL (bijv. voor latere verdere verwerking), moet u een tabelvariabele maken:

DECLARE @OutputTbl TABLE (ID INT)

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

Op deze manier kunt u meerdere waarden invoeren in @OutputTbl en daarop verder verwerken. Je zou ook een "gewone" tijdelijke tabel kunnen gebruiken (#temp ) of zelfs een "echte" persistente tabel als uw "uitvoerdoel" hier.




  1. Hoe maak je een extended insert met JDBC zonder strings te bouwen?

  2. Hoe dubbele door komma's gescheiden waarden in een enkele kolom in MySQL te verwijderen?

  3. Hoe het gemiddelde van de 'middelste' waarden in een groep te krijgen?

  4. PHP array_intersect of in_array dan MYSQL