Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie verwende ich OUTPUT, um neue und alte IDs zu erfassen?

Sie können das herkömmliche INSERT nicht verwenden um nicht eingefügte Felder auszugeben. Verwenden Sie stattdessen Zusammenführen (Achtung:funktioniert nur mit Datenbankkompatibilität>=100):

MERGE
  #tempproduct AS t
USING(
  SELECT
      Name
      , ID
  FROM
    product) AS s
ON (1=0)  
WHEN NOT MATCHED   
  THEN INSERT (Name) VALUES (Name)
OUTPUT inserted.ID, s.ID INTO @OutputAttributesValues;

SELECT * FROM @OutputAttributesValues