[MSSQL][INSERT INTO] IDENTITY_INSERT

  • 4773
  • 0

摘要:[MSSQL][INSERT INTO] IDENTITY_INSERT

今天在WinForms下練習SqlConnention與SqlCommand物件的操作,

其中在練習INSERT INTO語法時,發生了IDENTITY_INSERT的例外錯誤訊息:

Cannot insert explicit value for identity column in table 'testTable' when IDENTITY_INSERT is set to OFF.

 

問題發生在哪呢? 先來看一下Code:

[C#]

 

using (SqlConnection sqlconnention = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|Database1.mdf;Integrated Security=True;User Instance=True"))
            {
                sqlconnention.Open();

                SqlCommand sqlcmd = new SqlCommand("INSERT INTO testTable (id) VALUES (@id)", sqlconnention);

                sqlcmd.Parameters.Add("@id", SqlDbType.Int).Value = 4;

                sqlcmd.ExecuteNonQuery();
            }

 

程式的例外錯誤中斷點在於ExecuteNonQuery()方法,其中問題在於資料庫的testTable資料表(Data Table)設了主索引鍵(Primary Key),且同時將主索引鍵的資料行屬性→識別規格→(為識別)是;且有識別值增量,這樣設定後,在INSERT INTO語句中,不能含有主索引鍵的資料行名稱,像上面的範例將id嘗試新增到資料表裡面,可是id是主索引鍵,且有設定識別規格裡面的設定,所以才發生了IDENTITY_INSERT例外錯誤。

 

如果你還使用Linq的話,請參考 http://www.dotblogs.com.tw/nobel12/archive/2010/09/14/17721.aspx