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

Come utilizzare OUTPUT per acquisire nuovi e vecchi ID?

Non puoi usare il tradizionale INSERT per generare campi non inseriti.Utilizza invece unisci (avvertenza:funziona solo con la compatibilità del database>=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