優雅的例外處理

PostgreSQL 的交易與錯誤處理

Jason Myers

Principal Engineer

優雅降級的實作

DO $$
BEGIN
    UPDATE cookies SET quantity = quantity-6 WHERE name = 'Linga';
EXCEPTION 
    WHEN check_violation THEN
        INSERT INTO errors (msg) values ('Quantity can not be less than 0');
        UPDATE cookies SET quantity = 0 WHERE name = 'Linga';
        INSERT INTO errors (msg) values ('Set quantity to the 0 for Linga.');
END$$;
PostgreSQL 的交易與錯誤處理

何時使用優雅降級

  • 從外部系統載入資料時,把 null 改為 0
  • 儀器讀值僅在某門檻內準確
  • 收到超出範圍的日期時,改設為保留值
  • 觸發例外的紀錄寫到另一張表以便後續處理
PostgreSQL 的交易與錯誤處理

何時考慮優雅的例外處理

  • 當新值會被加總、平均等聚合運算掩蓋時。
  • 當新值會影響時間序列資料時。
PostgreSQL 的交易與錯誤處理

一起來練習吧!

PostgreSQL 的交易與錯誤處理

Preparing Video For Download...