Mysql邏輯刪除保留唯一索引

2021-10-08 19:33:13 字數 526 閱讀 1210

通常的業務系統中為了防止認為操作失誤,造成誤刪資料,都要求對於刪除操作只執行邏輯刪除,即假刪除。常見的做法新增刪除標識字段,使用者操作刪除時更新刪除標識欄位來達到目的。但是當遇到表中需要有唯一性索引時則會造成問題。

建立乙個商品編碼為a110的商品,商品編碼為該錶的唯一性索引,此時對該商品進行刪除後,無法再次新增商品編碼為a110的商品。

把商品編碼和刪除標識設定為復合唯一索引,刪除a110商品後可以再次新建乙個a110,解決了上述問題。但是此時需要再次刪除a110商品時則會出現無法刪除。

將商品編碼與token標識設定為復合唯一索引,刪除記錄時將id存入token標識中,這樣每次刪除時由於id不一致則不會導致無法刪除的情況。需要注意的是這樣刪除操作將會無法批量處理,必須逐條更新

將商品編碼與刪除標識設定為復合唯一索引,每次刪除時將刪除標識設定為null,由於null不會與其他欄位有組合唯一的效果,所以完美的解決了邏輯刪除保留唯一索引的問題。

唯一索引和邏輯刪除衝突

在資料表結構設計的時候有同時存在唯一索引和邏輯刪除,通常邏輯刪除is deleted是取值範圍0 1,當刪除同乙個唯一索引欄位值時,就會失敗。不再設定邏輯刪除標誌位,直接物理刪除,這依賴業務資料的特性。每個表新建乙個歷史表,儲存已經刪除的歷史資料,缺點是大量的歷史表。當然還可以參考mysql sch...

mysql 唯一索引 mysql建立唯一索引

檢視索引 show index from 資料庫表名 alter table 資料庫add index 索引名稱 資料庫欄位名稱 primary key 主鍵索引 alter table table name add primary key column unique 唯一索引 alter tabl...

MySQL唯一索引

mysql唯一索引 返回首頁 1 唯一索引 unique 單列唯一索引和聯合唯一索引。索引是為了加速查詢。唯一索引是加了約束條件。例如主外來鍵。2 唯一索引的約束 約束不能重複 可以為空 主鍵不能重複 不能為空 3 唯一索引的寫法 create table t1 id int num int,uni...