當軟刪除遇上聯合主鍵

2022-01-15 14:47:28 字數 739 閱讀 3616

資料大多是軟刪除的,而有時候遇到聯合主鍵就頭疼了,例如

public

class

thumbup

public

int userid

public

int blogid

public

bool isdeleted

}

在這個點讚表中,每人只能贊一次,因此通過聯合主鍵(userid, blogid) 實現唯一約束。 但是當軟刪除之後,再讚一次的時候,就無法插入資料了,因為違反了唯一性約束。解決這個問題,第一想法就是把 isdeleted 改成

public datetimeoffset daletedat

再修改聯合主鍵包含 daletedat,這樣就避免了軟刪除之後,無法插入新資料了。但是這樣的話,索引也變得更複雜了,應該會導致運算元據的效率降低,那麼是不是還有更好的解決辦法呢?外事不決問 google,果然這個問題早就有很多人遇到了,有人把 isdeleted 字段改成 public guid deletedtoken 利用不重複的 guid 來實現,也是乙個思路,但是問題依舊。

還有乙個更好的解決辦法,不過需要資料庫支援,那就是有條件的唯一索引,意思就是給索引加乙個條件,偽**:create index on (userid & blogid) where isdeleted == false 

目前用的 mongodb 有 partial index ,其他資料庫等遇到再更新。

《當阿呆遇上阿瓜》 當鐵鍬遇上石頭

該片是金 凱瑞成名之前在1994年給影迷奉獻的搞怪喜劇片 阿呆與阿瓜 的續集,說是續集,其實是前傳。新線公司讓我們足足等了10年才看到續集,然而此時影片的主創人員全部更換。少了金 凱瑞,似乎再沒有理由讓我們更期待看到這部影片。可別說筆者心態不正,筆者之所以看此片僅僅因為想看看新線公司是如何挖這塊金礦...

當技術遇上管理

哈佛商學院教授戴維 蓋兒文總結說過 我們的時間應該花在設計和除bug上,而不是不停地與上司打交道,或者監督別人的工作。作為乙個技術人員管理者,要麼你的技術能力徹底讓人信服,要麼你的想法與綜合能力高人一籌,而且還得顯得比手下的人要忙,不然誰心甘情願服從你的安排。很不巧,國內大多數公司裡,有些人的存在,...

當敏捷遇上銷售

在文章 敏捷與銷售 我的第一支scrum銷售團隊 中,對於大家經常關心的問題 是否能將銷售團隊做成敏捷的以及如何推動變革?銷售經理 eric krisfelt給出了自己的解答。他詳細描述了如何在銷售組織中實現scrum的步驟,並展示給大家非工程師團隊如何變成有自組織意識的敏捷團隊。在開始過渡之前,e...