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

SQL之防止误删数据

有以下4中方法降低删错数据的几率: 

1.先使用select 语句确定要删除的内容

        1.1 先用 SELECT 确认目标数据

        1.2 禁止执行无 WHERE 的 DELETE

2.使用逻辑删除,不要使用物理删除

        使用update更新删除标志,而不是使用delete物理删除

3.使用事务+手动验证

        第一步:开启事务,执行删除语句        

product_idnamestock
1手机0
2笔记本5
3耳机0
BEGIN TRANSACTION;  -- 开启事务select * from products where stock = 0  ---查看语句筛出来的数据是否是要删除的数据DELETE FROM products WHERE stock = 0;  -- 执行删除

        第二步:验证删除效果

 select * from products       ---如果查出来的数据只有product_id=2的数据,则delet语句书写正确的

        第三步:提交或回滚  

-- 验证后决定提交
COMMIT;  -- 此时物理删除真正发生-- 或回滚
ROLLBACK; -- 数据恢复原状 

4.设置数据操作权限        

  • 开发者禁用 DELETE 权限,仅限 DBA 或运维执行。

  • 通过中间层工具审批高风险操作。

PS:数据恢复:

        备份+日志

  1. 定期备份策略

    • 每日全量备份 + 每小时 Binlog 增量备份(MySQL)。

    • 测试备份可恢复性(重要!) 

  2. 二进制日志 (Binlog)
    • MySQL:通过 mysqlbinlog 工具解析 Binlog,生成反向 SQL(INSERT 替代 DELETE)恢复数据.
    • PostgreSQL:类似地使用 WAL(Write-Ahead Logging)恢复。
    • 时间点恢复 (PITR):利用全量备份 + Binlog/WAL 恢复到误删前的精确时间点。

 

http://www.dtcms.com/a/303202.html

相关文章:

  • Spring核心机制:深入理解控制反转(IoC)
  • Kotlin的datetime库
  • 荣耀应用市场《2025上半年应用合规治理报告》丨开发加油站
  • C# 静态类_静态方法_静态字段(static 声明静态的关键字 )
  • R语言与作物模型(DSSAT模型)技术应用
  • 未授权访问漏洞 总结
  • mysql 关于树形数据结构的一些操作
  • STM32中集成USB驱动
  • SQL 查询语法笔记
  • C语言笔记03 :关于指针的补充
  • 力扣面试150题--颠倒二进制位
  • 第18章 泛型 笔记
  • 第一第二章笔记整理
  • AutoGen - model_clients和model_context使用示例
  • Docker学习相关视频笔记(一)
  • 机器学习sklearn:决策树的参数、属性、接口
  • redis getshell得方式
  • Redis 部署模式详解
  • stm32开发 -- TFTLCD相关
  • Zabbix 6.0 监控AWS全栈实战|EC2至Lambda的无缝监控
  • 配置 MCP 让 cursor 结合 Figma 自动生成设计稿组件
  • Python defaultdict 的强大之处:告别繁琐的字典键检查: Effective Python 第17条
  • Python动态规划:从基础到高阶优化的全面指南
  • 网络与信息安全有哪些岗位:(3)安全运维工程师
  • 微算法科技(NASDAQ:MLGO)利用基于区块链的机器学习模型进行交易分类,实现交易数据的匿名化
  • Linux内核驱动开发核心问题全解
  • shell每日三题大神之路:第三天
  • Java 笔记 transient 用法
  • 四、计算机组成原理——第4章:指令系统
  • EAP(基于事件的异步编程模式)