Skip to content

處理被駁回的變更

何時用這份文件 你提的 Issue 收到 Reject,要決定怎麼回應。

第一原則

不要把 reject 當人身攻擊

審批者的工作是替整個團隊把關。Reject 是給你的訊號:「這個變更有問題,我們一起把它做對」。

看懂 reject 理由

審批者 reject 時必填理由(依 審批 SOP)。理由可能是:

類別
SQL 寫法問題大表沒用 CONCURRENTLY、缺 WHERE、回滾不可逆
需求不清Issue 描述沒講為什麼要做、缺背景
時機不對凍結期 / 大促前不能跑
影響範圍超預期你以為小變更,plan check 發現會掃 100M rows
缺回滾計畫沒寫如果失敗怎麼辦
需要拆分一個 Issue 想做太多事
資安 / 合規問題觸到敏感資料、缺 masking

看不懂 reject 理由 → 在 Issue 上留 comment 問,不要猜。

處理路徑

路徑 A:改 SQL 重做(最常見)

SQL 寫得有問題、影響範圍超預期、需要拆分 → 改 + 重提。

  1. 開新 Plan(不是改舊 Plan)

    已 issued 的 Plan 的 SQL 不可改(Plan 不變式)。

  2. 改完 SQL

  3. 等 plan check 全綠

  4. 建新 Issue,引用前次被駁回的 Issue

    Re-submission of #501 (rejected).
    
    Changes vs #501:
    1. Switched CREATE INDEX to use CONCURRENTLY.
    2. Reduced affected rows by adding WHERE created_at > '2026-01-01'.
    3. Added reverse SQL in rollback plan.
    
    Original reject reason: <quote>
  5. Cancel 舊 Issue(如果還沒自動 close)

為什麼要寫 Re-submission of #501?方便審批者比對前次 reject 與這次修正,加速第二輪審批。

路徑 B:補充說明(不改 SQL)

評估後認為審批者的 reject 是基於誤解 / 缺資訊,SQL 本身沒問題。

  1. 不要 直接重開同樣的 Issue(會被視為 ignore reject)
  2. 在原 Issue 上留 comment,講清楚:
    • 為什麼你認為 SQL 是對的
    • 補上 reviewer 沒看到的資訊(業務背景、效能測試結果、回滾計畫…)
  3. 詢問是否可以重新審視
  4. 如果審批者同意 → 開新 Issue 引用原 SQL;如果不同意 → 改成路徑 A 或路徑 C

路徑 B 不是「為了不改」的後門。是「審批者沒看到完整 context」的補救。如果 reject 理由站得住腳,請接受。

路徑 C:升級討論

你和審批者真實意見不合,技術判斷分歧。

不要僵在 Issue 上來回。升級的方式:

  1. 在 Issue 留 comment 說明你打算升級討論
  2. 找 DBA Lead / Tech Lead 開一個短會
  3. 達成共識 → 回到 Issue 記錄決議
  4. 共識可能是:你修改、審批者讓步、或第三方案

升級不是「投訴審批者」。是「讓更多人一起看這個問題」。

路徑 D:撤回(cancel)

你看完 reject 理由,發現這個變更現在不應該做

直接 cancel 原 Issue,並在 cancel comment 寫清楚為什麼:

Cancel. After review with @lead, decided to defer this change to next sprint
because <reason>.

不要做的事

反模式為什麼
同樣 SQL 重新提交(沒修)浪費審批者時間;可能被視為 process abuse
不回應 reject 直接消失Issue 變孤兒;日後問起沒人記得脈絡
為了過 review 把高風險拆成多個小 Issue規避審批 = 違規;高風險就是高風險,要正面處理
把 reject 升級到主管升級到技術 lead 可以;升級到管理層 = 政治化
私下找關係好的審批者批違反零信任 + 自核禁令

之後

  • 第二次提交建議主動 ping 同一位 reviewer(如果他還在線)
  • 修完後留個短 comment 致謝:「Thanks for the catch, this is much better now.」
  • 如果是常踩同類問題(例:常忘記 CONCURRENTLY)→ 自己整理一個個人 checklist,逐次提交前自查

相關

Argus — 公司內部資料庫變更審計平台