圖1
圖2如果資料從圖1改成圖2,再用TableAdapter.Update就會出現違反了PRIMARY KEY約束,不能插入重復值
我想可能是因為資料庫里面在把ID=10改成ID=11時,ID=11的那一行還沒有更改成ID=12造成的,這個問題有辦法解決嗎?
uj5u.com熱心網友回復:
在資料庫設計中,主鍵一旦生成,一般都不再改動,所以都不開放給用戶修改。你考慮下改變用戶界面吧。uj5u.com熱心網友回復:
主鍵不是不能改,可以改,現在是因為值不是出現重復了,所以報錯了uj5u.com熱心網友回復:
1. 不建議在資料庫中采用約束,會導致資料例外鎖,出現以上的情況,可以采用后端邏輯來控制這塊的鍵值的約束。2. 解決方案 - 采用弱約束,不要強制約束的方式,盡力的兩個設定的主鍵外鍵后,不要采用強約束的方式來處理資料,測驗的時候不方便,上線以后,基本不會采用在資料庫中直接修改資料的方式來處理了。
補充: 洗掉約束,重新通程序式來寫入資料。就不會出現這個問題了。
如果必須要約束,不建議直接在資料庫中修改資料。
uj5u.com熱心網友回復:
我之前也有想過,在資料庫多建立一列來做ID列,不做約束,主鍵保留,后端加載但隱藏主鍵列,后端采取判斷新的ID列里面是否有重復值,如果沒有就UPDATE。
主要是想省事,看有沒有其他辦法解決
,我省得后端加代碼判斷
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/284751.html
標籤:MySQL
下一篇:sql陳述句咨詢,急,感謝
