在業務表增加 is_deleted TINYINT(1) DEFAULT 0 字段(或 deleted_at DATETIME NULL)。
| 操作 | SQL 邏輯 |
|---|---|
| 刪除到回收站 | UPDATE table SET is_deleted = 1 WHERE id = ? |
| 列表頁查詢 | SELECT * FROM table WHERE is_deleted = 0 |
| 回收站頁查詢 | SELECT * FROM table WHERE is_deleted = 1 |
| 還原 | UPDATE table SET is_deleted = 0 WHERE id = ? |
| 徹底刪除 | DELETE FROM table WHERE id = ? |
is_deleted = 0 條件(可用攔截器或 BaseDAO 封裝)。is_deleted = 1,提供「還原」「徹底刪除」按鈕。若主表數據量極大、頻繁查詢,可建立 table_trash 結構同主表,刪除時 INSERT INTO table_trash SELECT * FROM table WHERE id=?; DELETE FROM table WHERE id=?,主表保持精簡,回收站獨立存儲。
「加字段 + 邏輯過濾」是最通用、改動最小的回收站實現,適合中小項目;大數據量場景可拆表歸檔。