閱界食譜今天吃什麼,先來這裡看看
代碼片段

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。

同類範本

SQL 更新與刪除(防手滑) · 閱界食譜