Stocker la valeur de la production inséré._ID de variable locale pour les réutiliser dans une autre requête
Je veux simplement exécuter une requête SQL qui retourne le courant id de la ligne qui a été ajouté à une table, par exemple:
insert into V_Post output inserted._ID values('Please return the id of THIS row :)')
Qui renvoie un nombre comme 155
Donc le but de ma question est de stocker ce nombre dans une variable locale comme XVALUE et ensuite utiliser cette XVALUE dans toute autre requête SQL comme:
insert into V_Posts values(1, XVALUE, null, GETDATE(), null, null, 1)
Donc je envisages de quelque chose comme:
int XVALUE = insert into V_Post output inserted._ID values('Please return the id of THIS row :)')
insert into V_Posts values(1, XVALUE, null, GETDATE(), null, null, 1)
OU
insert into V_Posts values(1, insert into V_Post output inserted._ID values('Please return the id of THIS row :)'), null, GETDATE(), null, null, 1)
Mais à la fois il ne fonctionne pas 🙁
J'espère que j'ai expliqué à ma question et je l'ai vraiment merci d'avance pour votre aide.
MODIFIER
Veuillez remarquer que j'ai deux tables: V_posts et V_post
Cela aide: SQL Server - valeur de Retour après INSERTION
Est-ce une Colonne d'Identité ???
Oui il est, mais Veuillez remarquer que j'ai deux tables: V_posts et V_post, je suis en train d'essayer d'obtenir l'ID d'une table et de les utiliser d'une autre table
À l'aide de @@IDENTITÉ n'est jamais une bonne Idée, il sera de retour d'Identité dernière les Valeurs générées au cours de la session à partir de n'importe quelle table . Utilisation IDENT_CURRENT ("Table_Name") la fonction qui retourne la dernière valeur générée pour le nom de la Table vous passez en paramètre
Une fois que vous avez la valeur d'un paramètre de l'utiliser partout où vous le souhaitez insérer, mettre à jour d'autres de la table tout ce que vous voulez faire avec elle.
Est-ce une Colonne d'Identité ???
Oui il est, mais Veuillez remarquer que j'ai deux tables: V_posts et V_post, je suis en train d'essayer d'obtenir l'ID d'une table et de les utiliser d'une autre table
À l'aide de @@IDENTITÉ n'est jamais une bonne Idée, il sera de retour d'Identité dernière les Valeurs générées au cours de la session à partir de n'importe quelle table . Utilisation IDENT_CURRENT ("Table_Name") la fonction qui retourne la dernière valeur générée pour le nom de la Table vous passez en paramètre
Une fois que vous avez la valeur d'un paramètre de l'utiliser partout où vous le souhaitez insérer, mettre à jour d'autres de la table tout ce que vous voulez faire avec elle.
OriginalL'auteur BOSS | 2013-11-17
Vous devez vous connecter pour publier un commentaire.
COLONNE D'IDENTITÉ
SI PAS de Colonne d'IDENTITÉ
Modifier
Proposé par Martin Smith à l'aide de
IDENT_CURRENT('V_Post')
peut retourner une valeur d'identité générée par une autre session simultanée, par conséquent, il est préférable d'utiliserSCOPE_IDENTITY() f
onction ou mon second suggéréOUTPUT
Méthode.Pas un problème de pal, heureux il m'a aidé 🙂
Je serais heureux de voir une autre solution.
retourne la dernière Identité, les Valeurs générées au cours de la session , qui est sujette aux erreurs, vous pourriez être en train de faire des insertions dans plusieurs tables à la fois, à l'aide de IDENT_CURRENT élimine ce risque
cheers pal gardez cela à l'esprit, ce n'est jamais venu à moi . de toute façon, vous apprenez quelque chose de nouveau tous les jours 🙂
OriginalL'auteur M.Ali
Vous pouvez utiliser
SCOPE_IDENTITY()
:Il retourne la dernière valeur d'IDENTITÉ produite sur une connexion, quel que soit le tableau qui produit de la valeur.
Vous pouvez trouver ici des informations détaillées sur ce que cette valeur signifie
Regardez dans la réponse en profondeur, il NE parle PAS de numéro de ligne, et ne se rapportent pas à une transaction avec une table.
Merci beaucoup, c'était correct.
OriginalL'auteur Yosi Dahari