Акуратне оброблення винятків

Транзакції та обробка помилок у PostgreSQL

Jason Myers

Principal Engineer

Плавна деградація в дії

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$$;
Транзакції та обробка помилок у PostgreSQL

Коли застосовувати плавну деградацію

  • Завантаження даних із зовнішньої системи, де ви хочете замінити null на 0
  • Отримання показників з приладу, точного лише до певного порога
  • Надходять дати поза діапазоном, які потрібно встановити на спеціальне значення
  • Запис усіх рядків, що спричиняють винятки, в іншу таблицю для подальшої обробки
Транзакції та обробка помилок у PostgreSQL

Коли варто розглянути акуратне оброблення винятків

  • Коли нове значення «ховається» за математичною операцією, як-от sum, avg чи інша агрегація.
  • Коли нове значення впливає на дані в часовому ряду.
Транзакції та обробка помилок у PostgreSQL

Давайте потренуємось!

Транзакції та обробка помилок у PostgreSQL

Preparing Video For Download...