1. 程式人生 > >K3違反內碼唯一鍵約束

K3違反內碼唯一鍵約束

K3有時候需要向資料庫中插入資料,但是插入的時候遇到主鍵衝突的錯誤,可以用如下方法解決。

 

 

比如新增聯絡人時,完整錯誤如下:
? ? 違反了 PRIMARY KEY 約束 'PK_CRM_Contact'。不能在物件 'dbo.CRM_Contact' 中插入重複鍵。
? ? 語句已終止。

出現此情況的原因一般是做二次開發的時候沒有處理處理ICMaxNum表,導致表ICMaxNum中的ID比聯絡人表的最大ID還小,因此導致ID重複

解決方法:
--找到CRM_Contact的FItemID、ICMaxNum表的FMaxNum
select FMaxNum,* From ICMaxNum where ftablename='CRM_Contact'
select top 1 * from CRM_Contact order by FContactID desc?
--如果CRM_Contact的FItemID比ICMaxNum表的FMaxNum大
--1、則刪除IC_MaxNum的記錄條件是ftablename in ('CRM_Contact')
--2、需要修改ICMaxNum的FMaxnum值比CRM_Contact的FItemID大1(2449是舉例資料)
delete from IC_MaxNum where ftablename in ('CRM_Contact')
update ICMaxNum set FMaxnum=2449 where ftablename='CRM_Contact'
update t_Identity set FNext=2499 where fname='CRM_Contact'

注意事項:1、二次開發做單據匯入的時候一定要處理ICMaxNum、t_Identity、IC_MaxNum這三個表
? ?? ?? ? 2、可以呼叫儲存過程GetICMaxNum來獲取新的ID

CRM銷售合同
select FMaxNum,* From ICMaxNum where ftablename='t_RPContract'
select top 1 * from t_RPContract order by FContractID desc


update ICMaxNum set FMaxnum=1134 where ftablename='t_RPContract'
update t_Identity set FNext=1134 where fname='t_RPContract'