Gestion élégante des exceptions

Transactions et gestion des erreurs dans PostgreSQL

Jason Myers

Principal Engineer

Dégradation élégante 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 élégante

  • Chargement de données d'un système externe où vous voulez remplacer les valeurs nulles par des 0
  • Relevés d'un instrument exact seulement jusqu'à un certain seuil
  • Réception de dates hors limites à remplacer par une valeur sentinelle
  • Écriture de tous les enregistrements provoquant des exceptions dans une autre table pour traitement ultérieur
Transactions et gestion des erreurs dans PostgreSQL

Quand envisager la 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 influe sur des données de série chronologique.
Transactions et gestion des erreurs dans PostgreSQL

Passons à la pratique !

Transactions et gestion des erreurs dans PostgreSQL

Preparing Video For Download...