我在表中逻辑删除了一条数据,表中存在唯一索引的字段,逻辑删除后,我有要insert一条一样的数据,这样肯定不行,如何解决这个问题?
光阴似箭催人老,日月如移越少年。
1.如1L所言,取消唯一約束,靠程式控制;2.如果是mysql的話,可以在insert語句後面加上on duplicate key update status = ?3.同樣是mysql的情況下,也可以用replace into代替insert into;
關於這個問題其實還有很大的思考空間,最靈活的方法是1,但同樣要面臨產生髒數據的風險(髒數據對程式碼的影響就不多說了,處理過的都懂的);2、3理論上只能保存最近一次邏輯刪除的記錄
採用哪種方法視乎業務上對邏輯刪除數據保存要求,如果要保留歷史數據而又不想採用方法1的話,可以在2、3基礎上實時(代碼層面)或定時對邏輯刪除的數據遷移至歷史表。
以上是本人知道的方法,如果還有更好的方法,希望不吝賜教。
最簡單的辦法就是取消唯一索引, 用程式來控制保證該欄位唯一。
資料完全一樣(注意是完全一樣,修改時間之類的也一樣)的話,你恢復刪除就好了啊
如果資料不完全一樣,要嘛換個id再插入一遍,要嘛加一列做修改歷史
1.如1L所言,取消唯一約束,靠程式控制;
2.如果是mysql的話,可以在insert語句後面加上on duplicate key update status = ?
3.同樣是mysql的情況下,也可以用replace into代替insert into;
關於這個問題其實還有很大的思考空間,最靈活的方法是1,但同樣要面臨產生髒數據的風險(髒數據對程式碼的影響就不多說了,處理過的都懂的);2、3理論上只能保存最近一次邏輯刪除的記錄
採用哪種方法視乎業務上對邏輯刪除數據保存要求,如果要保留歷史數據而又不想採用方法1的話,可以在2、3基礎上實時(代碼層面)或定時對邏輯刪除的數據遷移至歷史表。
以上是本人知道的方法,如果還有更好的方法,希望不吝賜教。
最簡單的辦法就是取消唯一索引, 用程式來控制保證該欄位唯一。
資料完全一樣(注意是完全一樣,修改時間之類的也一樣)的話,你恢復刪除就好了啊
如果資料不完全一樣,要嘛換個id再插入一遍,要嘛加一列做修改歷史