Корректная обработка исключений

Транзакции и обработка ошибок в 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

Когда стоит использовать корректную обработку исключений

  • Когда новое значение скрыто за математической операцией: суммой, средним или другим агрегатом.
  • Когда новое значение влияет на данные временного ряда.
Транзакции и обработка ошибок в PostgreSQL

Давайте потренируемся!

Транзакции и обработка ошибок в PostgreSQL

Preparing Video For Download...