Obtenez le dernier identifiant après l'insertion dans la base de données SQL Server
Après avoir inséré des données dans la base de données, il est souvent nécessaire d'obtenir l'ID du dernier enregistrement inséré. Regardons un scénario : après avoir inséré une ligne dans la table aspnet_GameProfiles, nous devons obtenir le GamesProfileId automatiquement incrémenté.
L'extrait de code suivant exécute une instruction INSERT mais ne dispose d'aucun mécanisme pour capturer le GamesProfileId nouvellement généré. Pour y parvenir, nous explorerons différentes méthodes en fonction de la version de SQL Server utilisée.
SQL Server 2005 et supérieur (pas de déclencheur d'insertion)
Pour SQL Server 2005 et supérieur, s'il n'y a pas de déclencheur d'insertion défini sur la table aspnet_GameProfiles, vous pouvez modifier l'instruction d'insertion pour inclure une clause OUTPUT :
<code class="language-sql">INSERT INTO aspnet_GameProfiles(UserId,GameId) OUTPUT INSERTED.ID VALUES(@UserId, @GameId)</code>
Cela renverra automatiquement l'ID inséré comme résultat de la requête. Vous pouvez le récupérer grâce au code suivant :
<code class="language-csharp">SqlCommand myCommand = new SqlCommand(insertSql, myConnection); ... SqlDataReader reader = myCommand.ExecuteReader(); reader.Read(); Int32 newId = reader.GetInt32(0);</code>
SQL Server 2000 ou insérer un déclencheur
Si vous utilisez SQL Server 2000 ou si vous avez des déclencheurs d'insertion sur la table, vous pouvez utiliser la fonction SCOPE_IDENTITY() :
<code class="language-sql">INSERT INTO aspnet_GameProfiles(UserId,GameId) VALUES(@UserId, @GameId); SELECT SCOPE_IDENTITY()</code>
Après avoir exécuté la requête, vous pouvez récupérer le dernier identifiant inséré à l'aide du code suivant :
<code class="language-csharp">SqlCommand myCommand = new SqlCommand(insertSql, myConnection); ... Int32 newId = (Int32) myCommand.ExecuteScalar();</code>
En utilisant ces techniques, vous pouvez obtenir efficacement le dernier GamesProfileId inséré, pouvant ainsi l'utiliser dans votre application pour des insertions ultérieures ou d'autres opérations.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!