先看不能碰什麼
工程師先查黑名單。如果 customers 或 status 被保護,這張單要回到權限與資料政策,不能改個 SQL 寫法硬闖。
dbcli blacklist list資料修正 · SQL
這篇用一個常見的修正單走一遍:營運發現一批 customers 的 status 是空的,想補成 active。先把會改到誰、改完怎麼確認講清楚,才輪到 SQL。
active。在送出變更前,審查者要看到三件事:沒有碰到受保護欄位、條件真的只選空值、寫入後空值歸零。工程師先查黑名單。如果 customers 或 status 被保護,這張單要回到權限與資料政策,不能改個 SQL 寫法硬闖。
dbcli blacklist list需求單寫「客戶狀態」,資料庫不一定就叫 status。先讀正式 schema,順便確認型別;這一步能擋掉最常見的欄位猜錯。
dbcli schema customers --format json這個預檢不會 UPDATE。它檢查目標表、WHERE 條件與回讀 SELECT,並印出寫入後可直接使用的驗證命令。審查者看到的不是一句「應該沒問題」,而是具體條件。
dbcli verify safe-backfill \
--table customers \
--query "UPDATE customers SET status = 'active' WHERE status IS NULL" \
--verify-query "SELECT count(*)::int AS n FROM customers WHERE status IS NULL" \
--expect "value == 0"核准後才由既有流程執行 UPDATE。接著加上 --after-write 回讀:如果還有空值,結果不會被包裝成成功;如果歸零,會留下可檢視的驗證文物。
dbcli verify safe-backfill ... --after-write
dbcli verification list