[英]2 rows inserted instead of 1 when using @@IDENTITY / scope_identity()
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 创建的行中的 ID。 但是,当我使用它时,会创建 2 行而不是 1 行。
我错过了什么?
谢谢
您发布的代码中的问题是您运行了 2 次相同的查询......一次使用ExecuteNonQuery(); 最后一个是(int)command.ExecuteScalar();
如果你尝试只使用 executeScalar 我认为你有你想要的结果......
尝试并希望这会有所帮助...
如果你愿意,你可以使用参数来检索身份,就像他们在本文中所做的那样
尝试做
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();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.