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 恢复到误删前的精确时间点。

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值