Si j'ai une instruction d'insertion telle que:
INSERT INTO MyTable
(
Name,
Address,
PhoneNo
)
VALUES
(
'Yatrix',
'1234 Address Stuff',
'1112223333'
)
Comment définir @var INT
la valeur d'identité de la nouvelle ligne (appelée Id
) à l'aide de la clause OUTPUT? J'ai vu des exemples de mise INSERTED.Name dans des variables de table, par exemple, mais je ne peux pas le mettre dans une variable non-table.
J'ai essayé OUPUT INSERTED.Id AS @var
, SET @var = INSERTED.Id
mais aucun n'a fonctionné.
sql
sql-server-2005
insert
Yatrix
la source
la source
OUTPUT
clause.OUTPUT
clause écrit dans une table. Il peut s'agir d'une variable de table, d'une table temporaire, ....Réponses:
Vous pouvez soit avoir l'ID nouvellement inséré en sortie sur la console SSMS comme ceci:
Vous pouvez également l'utiliser à partir de C #, par exemple, lorsque vous devez récupérer l'ID dans votre application appelante - exécutez simplement la requête SQL avec
.ExecuteScalar()
(au lieu de.ExecuteNonQuery()
) pour lire le résultatID
.Ou si vous devez capturer le nouveau fichier inséré
ID
dans T-SQL (par exemple pour un traitement ultérieur), vous devez créer une variable de table:De cette façon, vous pouvez insérer plusieurs valeurs
@OutputTbl
et effectuer un traitement supplémentaire sur celles-ci. Vous pouvez également utiliser ici une table temporaire "régulière" (#temp
) ou même une "vraie" table persistante comme "cible de sortie".la source
real persistent table
- c'est extrêmement fantastique car cela signifie que vous pouvezINSERT
enTWO
même temps obtenir des informations dans des tableaux.SCOPE_IDENTITY()
fonctionne mieux pour cela.