การจัดการข้อยกเว้นอย่างสง่างาม

Transactions and Error Handling in PostgreSQL

Jason Myers

Principal Engineer

Graceful degradation ในทางปฏิบัติ

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$$;
Transactions and Error Handling in PostgreSQL

เมื่อใดควรใช้ graceful degradation

  • โหลดข้อมูลจากระบบภายนอกและต้องการแทนที่ค่า null ด้วย 0
  • รับค่าจากเครื่องมือที่แม่นยำได้ถึงระดับหนึ่งเท่านั้น
  • รับวันที่ที่อยู่นอกช่วงที่กำหนดและต้องการตั้งค่าเป็น sentinel value
  • บันทึกทุกแถวที่ทำให้เกิดข้อยกเว้นลงในตารางอื่นเพื่อประมวลผลต่อ
Transactions and Error Handling in PostgreSQL

เมื่อใดควรพิจารณาใช้การจัดการข้อยกเว้นอย่างสง่างาม

  • เมื่อค่าใหม่จะถูกซ่อนอยู่ภายในการคำนวณ เช่น sum, avg หรือ aggregate อื่น
  • เมื่อค่าใหม่ส่งผลต่อข้อมูลใน time series
Transactions and Error Handling in PostgreSQL

มาฝึกกันเถอะ!

Transactions and Error Handling in PostgreSQL

Preparing Video For Download...