簡體   English   中英

使用 @@IDENTITY / scope_identity() 時插入 2 行而不是 1 行

[英]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 我認為你有你想要的結果......

嘗試並希望這會有所幫助...

如果你願意,你可以使用參數來檢索身份,就像他們在本文中所做的那樣

如果您在第一個問題中使用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();      
    } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM