SQL 更新与删除(防手滑)
改数据前先 SELECT 一遍,改完再确认。
模板正文
-- 第 1 步:先 SELECT 出要改的行,确认数量 SELECT COUNT(*) FROM users WHERE status = 'pending' AND created_at < '2026-01-01'; -- 第 2 步:把同样的 WHERE 写进 UPDATE UPDATE users SET status = 'expired', updated_at = NOW() WHERE status = 'pending' AND created_at < '2026-01-01'; -- 第 3 步:确认影响行数符合预期,再提交事务 -- (生产库建议先 BEGIN; ... 检查后 COMMIT;) -- 删除同理 DELETE FROM sessions WHERE expires_at < NOW() LIMIT 1000;
怎么用
任何 UPDATE/DELETE 都按这个流程走。
使用要点
- UPDATE/DELETE 没写 WHERE 就是全表操作,写之前先想三秒。
- 生产环境先开事务,确认行数对了再 COMMIT。