[英]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.