Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment utiliser OUTPUT pour capturer le nouvel et l'ancien identifiant ?

Vous ne pouvez pas utiliser INSERT traditionnel pour afficher des champs non insérés. Utilisez plutôt la fusion (avertissement :ne fonctionne qu'avec une compatibilité de base de données >= 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