使用@@IDENTITY/scope_IDENTITY()时插入了2行,而不是1行

本文关键字:2行 1行 插入 scope @@IDENTITY IDENTITY 使用 | 更新日期: 2023-09-27 17:57:36

using (SqlConnection connection = new SqlConnection(ConnectionString))
    {
        string query = "INSERT INTO SocialGroup (created_by_fbuid) VALUES (@FBUID); SELECT CAST(scope_identity() AS int)";
        SqlCommand command = new SqlCommand(query, connection);
        command.Parameters.AddWithValue("@FBUID", FBUID);
        connection.Open();
        command.ExecuteNonQuery();
        int lastID = (int)command.ExecuteScalar();
    }

没有

SELECT CAST(scope_identity() AS int)

插入一行。但由于我需要使用scope_identity从创建的行im中获得ID。但是,当我使用它时,会创建两行而不是一行。

我错过什么了吗?

感谢

使用@@IDENTITY/scope_IDENTITY()时插入了2行,而不是1行

您发布的代码中的问题是您运行了两次相同的查询。。。一个带有ExecuteNonQuery((,最后一个使用(int(命令.ExecuteScaler((

如果你试着只使用executeScalar,我想你已经得到了你想要的结果。。。。

试着希望这能有所帮助。。。

如果您愿意,您可以使用Parameter来检索标识,就像他们在本文中所做的那样

如果您在第一个问题中使用gbn或我的答案,那么问题就不会出现。

尝试进行

 using (SqlConnection connection = new SqlConnection(ConnectionString))     
    {         
    string query = "INSERT INTO SocialGroup (created_by_fbuid) VALUES (@FBUID);";         
    SqlCommand command = new SqlCommand(query, connection);            
    command.Parameters.AddWithValue("@FBUID", FBUID);         
     connection.Open();         
    command.ExecuteNonQuery();
     query = "SELECT CAST(scope_identity() AS int)";     
     command = new SqlCommand(query, connection);                   
    int lastID = (int)command.ExecuteScalar();      
    }