![](/img/trans.png)
[英]An explicit value for the identity column in table 'Fee' can only be specified when a column list is used and IDENTITY_INSERT is ON
[英]An explicit value for the identity column in table 'Table' can only be specified when a column list is used and IDENTITY_INSERT is ON
是否有人知道這個錯誤(僅當使用列列表且IDENTITY_INSERT為ON時,才能指定表“ HD_AANVRAAG_FASE”中的身份列的顯式值)。
說明:執行當前Web請求期間發生未處理的異常。 請查看堆棧跟蹤,以獲取有關錯誤及其在代碼中起源的更多信息。
異常詳細信息:System.Data.SqlClient.SqlException:僅在使用列列表且IDENTITY_INSERT為ON時,才能指定表'HD_AANVRAAG_FASE'中的Identity列的顯式值。 任何幫助表示贊賞。
private void Insert2()
{
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["HELPDESK_OUTLOOKConnectionString3"].ToString());
conn.Open();
SqlCommand dCmd2 = new SqlCommand(
"INSERT INTO HD_AANVRAAG_FASE VALUES (@fase_id, @aanvraag_id, @status_id, "
+ "@werknemer_id, @fase_datum) SET IDENTITY_INSERT HD_AANVRAAG_FASE OFF ",
conn);
dCmd2.Parameters.AddWithValue("@fase_id", 1);
dCmd2.Parameters.AddWithValue("@aanvraag_id", 2622);
dCmd2.Parameters.AddWithValue("@status_id", 15);
dCmd2.Parameters.AddWithValue("@werknemer_id", 165);
dCmd2.Parameters.AddWithValue("@fase_datum", "12-12-2001");
dCmd2.ExecuteNonQuery();
conn.Close();
}
由於您未明確指定列,因此我假設@fase_id
傳遞到IDENTITY
列中, 因為錯誤表明您不能這樣做,除非通過IDENTITY_INSERT
強制執行。
通常,您讓數據庫生成此代碼。 在INSERT
指定列,並省略標識列(並且不要嘗試分配值)。 INSERT
您的新ID后的直線可作為SCOPE_IDENTITY()
。
您的代碼包含
最后將SET IDENTITY_INSERT HD_AANVRAAG_FASE OFF
但沒有相應的
開始時將SET IDENTITY_INSERT HD_AANVRAAG_FASE ON
為什么要以任何方式顯式插入這些內容? 它是同步任務嗎?
你錯過了
SET IDENTITY_INSERT HD_AANVRAAG_FASE ON
在運行插入之前。 這就是錯誤的確切原因。
也就是說,顯式插入標識值很少見,例如,僅在將數據從一個表復制到另一個表或使用顯式ID初始化新表時使用。 通常,您只想從INSERT中省略標識值,這也可以避免該錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.