Tratamento de exceções elegante

Transações e Tratamento de Erros no PostgreSQL

Jason Myers

Principal Engineer

Degradação elegante em ação

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$$;
Transações e Tratamento de Erros no PostgreSQL

Quando usar degradação elegante

  • Carregar dados de um sistema externo e substituir nulls por 0
  • Obter leituras de um instrumento preciso só até certo limite
  • Receber datas fora do intervalo e definir um valor sentinela
  • Registrar em outra tabela todos os registros que geram exceções para processar depois
Transações e Tratamento de Erros no PostgreSQL

Quando considerar tratamento de exceções elegante

  • Quando o novo valor fica oculto por uma operação matemática como soma, média ou outro agregado.
  • Quando o novo valor afeta dados em uma série temporal.
Transações e Tratamento de Erros no PostgreSQL

Vamos praticar!

Transações e Tratamento de Erros no PostgreSQL

Preparing Video For Download...