Как получить последний вставленный идентификатор? - PullRequest
162 голосов
/ 08 марта 2011

У меня есть этот код:

string insertSql = 
    "INSERT INTO aspnet_GameProfiles(UserId,GameId) VALUES(@UserId, @GameId)";

using (SqlConnection myConnection = new SqlConnection(myConnectionString))
{
   myConnection.Open();

   SqlCommand myCommand = new SqlCommand(insertSql, myConnection);

   myCommand.Parameters.AddWithValue("@UserId", newUserId);
   myCommand.Parameters.AddWithValue("@GameId", newGameId);

   myCommand.ExecuteNonQuery();

   myConnection.Close();
}

Когда я вставляю в эту таблицу, у меня есть столбец первичного ключа auto_increment int с именем GamesProfileId, как я могу получить последний вставленный после этого, чтобы я могиспользовать этот идентификатор для вставки в другую таблицу?

Ответы [ 15 ]

0 голосов
/ 20 июня 2017

После вставки любой строки вы можете получить последний вставленный идентификатор по строке запроса ниже.

INSERT INTO aspnet_GameProfiles (UserId, GameId) VALUES (@UserId, @GameId);ВЫБЕРИТЕ @@ IDENTITY

0 голосов
/ 03 февраля 2017

После этого:

INSERT INTO aspnet_GameProfiles(UserId, GameId) OUTPUT INSERTED.ID VALUES(@UserId, @GameId)

Выполнить это

int id = (int)command.ExecuteScalar;

Будет работать

0 голосов
/ 31 июля 2014

Использовать SELECT SCOPE_IDENTITY () в запросе

0 голосов
/ 30 июля 2012

Вы также можете использовать вызов SCOPE_IDENTITY в SQL Server.

0 голосов
/ 15 мая 2012
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
CREATE PROC [dbo].[spCountNewLastIDAnyTableRows]
(
@PassedTableName as NVarchar(255),
@PassedColumnName as NVarchar(225)
)
AS
BEGIN
DECLARE @ActualTableName AS NVarchar(255)
DECLARE @ActualColumnName as NVarchar(225)
    SELECT @ActualTableName = QUOTENAME( TABLE_NAME )
    FROM INFORMATION_SCHEMA.TABLES
    WHERE TABLE_NAME = @PassedTableName
    SELECT @ActualColumnName = QUOTENAME( COLUMN_NAME )
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE COLUMN_NAME = @PassedColumnName
    DECLARE @sql AS NVARCHAR(MAX)
    SELECT @sql = 'select MAX('+ @ActualColumnName + ') + 1  as LASTID' + ' FROM ' + @ActualTableName 
    EXEC(@SQL)
END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...