Gestion élégante des exceptions

Transactions et gestion des erreurs dans PostgreSQL

Jason Myers

Principal Engineer

Dégradation maîtrisée en action

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 et gestion des erreurs dans PostgreSQL

Quand utiliser la dégradation maîtrisée

  • Charger des données d'un système externe et remplacer les null par des 0
  • Obtenir des mesures d'un instrument fiable seulement jusqu'à un certain seuil
  • Recevoir des dates hors limites à remplacer par une valeur sentinelle
  • Écrire dans une autre table tous les enregistrements qui génèrent des exceptions pour traitement ultérieur
Transactions et gestion des erreurs dans PostgreSQL

Quand envisager une gestion élégante des exceptions

  • Quand la nouvelle valeur est masquée par une opération mathématique comme une somme, une moyenne ou un autre agrégat.
  • Quand la nouvelle valeur affecte des données en série temporelle.
Transactions et gestion des erreurs dans PostgreSQL

Passons à la pratique !

Transactions et gestion des erreurs dans PostgreSQL

Preparing Video For Download...