优雅的异常处理

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...