首頁  >  問答  >  主體

mysql - 关于数据逻辑删除的问题?

我在表中逻辑删除了一条数据,表中存在唯一索引的字段,逻辑删除后,我有要insert一条一样的数据,这样肯定不行,如何解决这个问题?

大家讲道理大家讲道理2742 天前988

全部回覆(3)我來回復

  • 天蓬老师

    天蓬老师2017-04-17 13:55:20

    1.如1L所言,取消唯一約束,靠程式控制;
    2.如果是mysql的話,可以在insert語句後面加上on duplicate key update status = ?
    3.同樣是mysql的情況下,也可以用replace into代替insert into;

    關於這個問題其實還有很大的思考空間,最靈活的方法是1,但同樣要面臨產生髒數據的風險(髒數據對程式碼的影響就不多說了,處理過的都懂的);2、3理論上只能保存最近一次邏輯刪除的記錄

    採用哪種方法視乎業務上對邏輯刪除數據保存要求,如果要保留歷史數據而又不想採用方法1的話,可以在2、3基礎上實時(代碼層面)或定時對邏輯刪除的數據遷移至歷史表。

    以上是本人知道的方法,如果還有更好的方法,希望不吝賜教。

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-17 13:55:20

    最簡單的辦法就是取消唯一索引, 用程式來控制保證該欄位唯一。

    回覆
    0
  • ringa_lee

    ringa_lee2017-04-17 13:55:20

    資料完全一樣(注意是完全一樣,修改時間之類的也一樣)的話,你恢復刪除就好了啊

    如果資料不完全一樣,要嘛換個id再插入一遍,要嘛加一列做修改歷史

    回覆
    0
  • 取消回覆