sql >> Base de Datos >  >> RDS >> Sqlserver

¿Cómo usar OUTPUT para capturar ID nuevos y antiguos?

No puedes usar INSERT tradicional para generar campos no insertados. Utilice fusionar en su lugar (advertencia:solo funciona con compatibilidad de base de datos>=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