Elegant felhantering

Transaktioner och felhantering i PostgreSQL

Jason Myers

Principal Engineer

Kontrollerad degradering i praktiken

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$$;
Transaktioner och felhantering i PostgreSQL

När du ska använda kontrollerad degradering

  • Inläsning av data från ett externt system där null-värden ska ersättas med 0
  • Avläsning från ett instrument som bara är exakt upp till ett visst tröskelvärde
  • Mottagning av datum utanför tillåtet intervall som ska sättas till ett markörsvärde
  • Skrivning av alla poster som orsakar undantag till en separat tabell för vidare bearbetning
Transaktioner och felhantering i PostgreSQL

När du bör överväga elegant felhantering

  • När det nya värdet döljs bakom en matematisk operation, till exempel sum, avg eller annan aggregering.
  • När det nya värdet påverkar data i en tidsserie.
Transaktioner och felhantering i PostgreSQL

Nu kör vi en övning!

Transaktioner och felhantering i PostgreSQL

Preparing Video For Download...