2013-04-18 91 views
1

我使用MSSQL server 2008作爲我的Web應用程序(JIRA)的數據庫,幾天前我通過數據庫插入了一些值。現在,當我嘗試通過UI添加值時,出現以下異常。重複的主鍵異常MSSQL服務器2008

com.atlassian.jira.exception.DataAccessException:org.ofbiz.core.entity.GenericEntityException:同時插入:[GenericEntity:的CustomFieldOption] [ID,10815] [序列,7] [值,TEST] [在執行以下操作時發生SQL異常:INSERT INTO dbo.customfieldoption(ID,CUSTOMFIELD,CUSTOMFIELDCONFIG,PARENTOPTIONID,SEQUENCE,自定義值,選項類型,已禁用)VALUES(自定義字段,值爲10400)[parentoptionid,null] (?,?,?,?,?,?,?,?)(違反PRIMARY KEY約束'PK_customfieldoption'。不能在對象'dbo.customfieldoption'中插入重複鍵。重複鍵值爲(10815)。))

我相信這是因爲主鍵是一個自動增量值,我通過查詢插入了這個值。 有人可以幫助我這個。我想重置自動增量序列會有所幫助。

回答

2

希望這會有所幫助!僅供參考,SQL Server使用所謂的身份不會自動遞增

-- First check what value is being used 
dbcc checkident('tableName',noreseed) 
-- Then you can "reseed" it to whatever value you want. If you use 10815, the value that will be used is 10816 
dbcc checkident('tableName',reseed,10815) 
1

答案很簡單:

嘗試修改你的用戶界面的應用程序,使得它執行SQL語句不包括PK列碼,dbo.customfieldoption.ID。

Long答案:

您的UI應用程序試圖執行以下SQL語句。

INSERT INTO dbo.customfieldoption (ID, CUSTOMFIELD, CUSTOMFIELDCONFIG, PARENTOPTIONID, SEQUENCE, customvalue, optiontype, disabled) VALUES (?, ?, ?, ?, ?, ?, ?, ?) 

上面的SQL語句似乎包含PK列的值,即dbo.customfieldoption.ID。如果爲數據庫啓用了自動增量,那麼您的UI應用程序不需要爲PK列添加值。

嘗試修改您的UI應用程序的代碼,使其執行不包含dbo.customfieldoption.ID的SQL語句。 SQL語句應該與下面的類似。

INSERT INTO dbo.customfieldoption (CUSTOMFIELD, CUSTOMFIELDCONFIG, PARENTOPTIONID, SEQUENCE, customvalue, optiontype, disabled) VALUES (?, ?, ?, ?, ?, ?, ?)