使用@@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。但是,当我使用它时,会创建两行而不是一行。
我错过什么了吗?
感谢
您发布的代码中的问题是您运行了两次相同的查询。。。一个带有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();
}