当前位置: 首页 > news >正文

软删除 vs 硬删除:MySQL 实现软删除(is_deleted 字段),避免数据丢失

前言

开发中直接 DELETE 硬删除数据,一旦误删无法恢复,订单、用户、商品等核心业务数据绝对不能物理删除。行业通用方案:软删除(逻辑删除),通过 is_deleted 标记区分有效 / 已删除数据。


一、硬删除(DELETE,不推荐核心业务)

-- 物理删除,数据彻底消失,无备份无法找回 DELETE FROM user WHERE user_id = 10;

缺点:误删无法恢复,无法统计历史订单、用户数据,丢失业务记录。


二、软删除设计方案

1. 表统一增加软删除字段

CREATE TABLE user ( user_id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(20) NOT NULL, password VARCHAR(64) NOT NULL, is_deleted TINYINT DEFAULT 0 COMMENT '0正常 1已逻辑删除', delete_time DATETIME NULL COMMENT '删除时间' );

字段说明:

  • is_deleted:0 = 有效数据,1 = 已删除;
  • delete_time:记录删除时间,用于统计、恢复。

2. 逻辑删除操作(替代 DELETE)

-- 软删除,仅修改标记,数据保留 UPDATE user SET is_deleted = 1, delete_time = NOW() WHERE user_id = 10;

3. 查询时过滤已删除数据(所有业务查询必加条件)

-- 查询有效用户,自动屏蔽已删除数据 SELECT * FROM user WHERE is_deleted = 0; -- 恢复已删除数据 UPDATE user SET is_deleted = 0, delete_time = NULL WHERE user_id = 10; -- 查询所有含已删除数据(后台管理、数据复盘) SELECT * FROM user;

三、复合索引优化(避免查询变慢)

几乎所有查询都会带is_deleted=0,建立联合索引:

-- 常用查询条件:username + is_deleted CREATE INDEX idx_name_del ON user(username,is_deleted);

四、软删除优缺点

优点

  1. 误删可随时恢复,保留完整业务历史数据;
  2. 支持订单、财务数据溯源、对账;
  3. 无需频繁备份规避删除风险。

缺点

  1. 表数据持续膨胀,长期需定时归档历史删除数据;
  2. 所有业务查询必须携带is_deleted=0,遗忘会查出已删除脏数据。

五、开发规范避坑

  1. 所有业务表统一添加is_deleteddelete_time
  2. 前端列表、业务查询强制过滤is_deleted=0
  3. 多表关联 JOIN 时,每张表都要加软删除条件;
  4. 定期归档长期软删除数据至历史归档表,减少主表压力。

六、多表关联软删除示例

-- 查询有效用户+有效订单,两张表都过滤软删除 SELECT u.username,o.order_no FROM user u LEFT JOIN `order` o ON u.user_id = o.user_id AND o.is_deleted = 0 WHERE u.is_deleted = 0;
http://www.jsqmd.com/news/1203295/

相关文章:

  • 中国土壤质地数据|1km栅格|Sand/Silt/Clay百分比
  • 虹口区货物搬场上门打包 省时省力轻松完成全部搬迁相关工作 - 热点品牌推荐
  • CodeBuddy中配置Playwright MCP 浏览器自动化完全指南
  • 2026年如东冰箱维修本地靠谱服务商精选榜单汇总 - 热点品牌推荐
  • 鸿蒙原生开发手记:徒步迹 - 路线列表页与@LazyForEach
  • 反激变换器工作原理与设计实战指南
  • 阿里云 RDS MySQL vs 华为云 GaussDB:关系型数据库选型全维度对比
  • 佛山夏令营有哪些:军博营地效果绝佳 - 晚香时候
  • Kiro AI 开发助手能力全景指南
  • 2026年如东空调维修师傅靠谱服务商实力排行榜单 - 热点品牌推荐
  • MySQL 防止 SQL 注入:参数化查询,新手必学的安全技巧
  • 从货源到渠道——亿迈分销商城打造供应商与卖家高效对接的跨境分销平台
  • Cursor + GitHub Projects双模驱动(企业级项目看板搭建手册)
  • TCN+transformer+通道注意力机制时间序列预测
  • 奥地利市场中名义雇主公司EOR的实际应用与价值分析
  • 读芯片战争:世界最关键技术的争夺战09挑战(上)
  • JavaScript 函数完整入门指南:声明、调用、参数、返回值、作用域全解析
  • 佛山夏令营选哪家:军博营地行业首位 - 云溪自乐
  • 51单片机核心板PCB(笔记)
  • 2026键盘推荐|IQUNIX EV63多场景适配,不允许有人不知道!
  • 2026年北京诚信的汽车贴玻璃膜机构选购参考指南 - 热点品牌推荐
  • Kiro 中配置 Redis MCP Server 完整指南
  • 2026年如东挂机空调维修公司师傅口碑实力榜单公开汇总 - 热点品牌推荐
  • 2026/6/9
  • 阿里云 Lindorm vs HBase vs Cassandra 宽表数据库深度对比
  • 13进制同步计数器设计:JK触发器与状态机原理详解
  • 【智能体开发】《LangChain核心技术与LLM项目实践》_202.[第12章 项目实战] 数据飞轮效应:打造高质量私有化训练数据集_attempt1_mermaid_repair_in_progr
  • 土耳其企业如何利用专业雇主PEO实现福利外包?
  • 如何开发一个能够读取侧扫声呐(Side-Scan Sonar)原始数据文件(如XTF和DVS格式)的系统软件
  • 亲身到店探访上海格拉苏蒂官方售后服务中心|最新地址与客服电话(2026年7月最新) - 亨得利钟表维修中心