La seule façon de faire cela est avec plusieurs instructions. Utilisation de SQL dynamique, vous pouvez le faire en séparant chaque déclaration dans votre chaîne de requête avec un point-virgule:
"DECLARE @ID int;INSERT INTO [Entry] (...) VALUES ...; SELECT @ID = scope_identity();INSERT INTO [TAGS] (ID_ENTRY) VALUES (@ID);"
Assurez-vous que vous mettez cela dans une transaction pour protéger contre les problèmes de conflit et de tout garder atomique. Vous pouvez également diviser cela en deux requêtes distinctes pour renvoyer la nouvelle valeur d'ID au milieu si vous le souhaitez; Assurez-vous simplement que les deux requêtes sont dans la même transaction.
En outre: vous utilisez des requêtes paramétrées avec votre SQL dynamique, n'est-ce pas? Si vous ne l'êtes pas, je viendrai personnellement là-bas et vous frapper 10 000 fois avec une nouille humide jusqu'à ce que vous vous repentiez de vos moyens insécurisés.
scope_identity() est généralement préféré à @@ identity en dehors des triggers: êtes-vous sûr qu'un trigger ne sera pas ajouté plus tard, en "cassant" le code en silence? –
SCOPE_IDENTITY() est juste que je pense que je veux – mavera