Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como usar OUTPUT para capturar ID novo e antigo?


Você não pode usar o INSERT tradicional para gerar campos não inseridos.Use mesclar (advertência:só funciona com compatibilidade de banco de dados>=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