Netjes uitzonderingen afhandelen

Transacties en foutafhandeling in PostgreSQL

Jason Myers

Principal Engineer

Graceful degradatie in actie

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$$;
Transacties en foutafhandeling in PostgreSQL

Wanneer graceful degradatie gebruiken

  • Gegevens laden uit een extern systeem en null vervangen door 0
  • Metingen krijgen van een instrument dat maar tot een drempel nauwkeurig is
  • Datums ontvangen buiten het bereik die je op een sentinelwaarde zet
  • Alle records met uitzonderingen naar een andere tabel wegschrijven voor naverwerking
Transacties en foutafhandeling in PostgreSQL

Wanneer nette uitzonderingafhandeling overwegen

  • Als de nieuwe waarde verdwijnt in een bewerking zoals som, avg of een andere aggregatie.
  • Als de nieuwe waarde tijdreeksdata beïnvloedt.
Transacties en foutafhandeling in PostgreSQL

Laten we oefenen!

Transacties en foutafhandeling in PostgreSQL

Preparing Video For Download...