取得SQL Server資料庫插入後最新的ID
在資料庫插入資料後,經常需要取得最新插入記錄的ID。讓我們來看一個場景:需要在aspnet_GameProfiles表中插入一行後,取得自動遞增的GamesProfileId。
以下程式碼片段執行INSERT語句,但沒有擷取新產生的GamesProfileId的機制。為實現此目的,我們將探討基於所使用SQL Server版本的不同方法。
SQL Server 2005以上版本(無插入觸發器)
對於SQL Server 2005以上版本,如果aspnet_GameProfiles表上沒有定義插入觸發器,您可以修改插入語句以包含OUTPUT子句:
<code class="language-sql">INSERT INTO aspnet_GameProfiles(UserId,GameId) OUTPUT INSERTED.ID VALUES(@UserId, @GameId)</code>
這將自動傳回插入的ID作為查詢的輸出。您可以使用以下程式碼檢索它:
<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或插入觸發器
如果您使用的是SQL Server 2000或表格上有插入觸發器,您可以使用SCOPE_IDENTITY()函數:
<code class="language-sql">INSERT INTO aspnet_GameProfiles(UserId,GameId) VALUES(@UserId, @GameId); SELECT SCOPE_IDENTITY()</code>
執行查詢後,您可以使用以下程式碼檢索最新插入的ID:
<code class="language-csharp">SqlCommand myCommand = new SqlCommand(insertSql, myConnection); ... Int32 newId = (Int32) myCommand.ExecuteScalar();</code>
透過使用這些技術,您可以有效地取得最後插入的GamesProfileId,從而能夠在應用程式中將其用於後續插入或其他操作。
以上是如何在 SQL Server 插入資料庫後檢索最後插入的 ID?的詳細內容。更多資訊請關注PHP中文網其他相關文章!