首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

資料庫軟刪除設計:實現類 Windows 回收站的檔案恢復功能

     編輯:程式設計綜合問答

需求分析

資訊系統常需提供「刪除後可恢復」功能,類似 Windows 回收站。核心在於避免物理刪除資料,改用邏輯標記實現軟刪除。

表結構設計

CREATE TABLE files (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(255) NOT NULL,
    path VARCHAR(1024),
    size BIGINT,
    deleted TINYINT DEFAULT 0 COMMENT '0-正常 1-已刪除',
    delete_time DATETIME NULL COMMENT '刪除時間',
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP
);

核心操作邏輯

操作SQL 示例
刪除UPDATE files SET deleted=1, delete_time=NOW() WHERE id=?
查詢列表(含回收站)SELECT * FROM files WHERE deleted=1 ORDER BY delete_time DESC
恢復UPDATE files SET deleted=0, delete_time=NULL WHERE id=?
永久刪除DELETE FROM files WHERE id=? AND deleted=1
自動清理定時任務清理 delete_time < 30天前 的記錄

進階優化

  • 唯一索引條件包含 deleted:UNIQUE KEY uk_name_deleted (name, deleted) 允許同名檔案在正常與回收站並存
  • 分區表:大數據量下按 deleted 分區提升查詢效能
  • 審計日誌:單獨記錄刪除/恢復操作日誌,滿足合規審計需求

應用層配合

  • API 統一增加 include_deleted 參數控制是否返回已刪除數據
  • 前端提供「回收站」頁籤,支援批量恢復/永久刪除
  • 關鍵業務實體(如訂單、合同)建議採用狀態機而非簡單布林標記

總結

軟刪除是實現資料恢復的標準模式,關鍵在於不執行物理 DELETE,改用狀態欄位標記。配合合理的索引、定時清理策略與應用層協作,即可構建穩健的回收站機制。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved