10 Views e Triggers - rodrigomourapinto/aprenda_postgresql GitHub Wiki

Views e triggers

View

Uma view é uma consulta salva que pode ser usada como fonte de dados:

CREATE OR REPLACE VIEW vw_resumo_pedidos AS
SELECT
    p.pedido_id,
    c.nome AS cliente,
    p.data_pedido,
    p.total
FROM pedidos p
JOIN clientes c ON c.cliente_id = p.cliente_id;

Depois:

SELECT *
FROM vw_resumo_pedidos
WHERE total >= 500;

Trigger

Trigger é executada automaticamente quando um evento configurado ocorre em uma tabela.

Exemplo: registrar atualização:

CREATE TABLE auditoria_produtos (
    auditoria_id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
    produto_id bigint NOT NULL,
    operacao text NOT NULL,
    executado_em timestamptz NOT NULL DEFAULT now()
);

CREATE OR REPLACE FUNCTION fn_auditar_produto()
RETURNS trigger
LANGUAGE plpgsql
AS $$
BEGIN
    INSERT INTO auditoria_produtos (produto_id, operacao)
    VALUES (NEW.produto_id, TG_OP);
    RETURN NEW;
END;
$$;

CREATE TRIGGER trg_auditar_produto
AFTER UPDATE ON produtos
FOR EACH ROW
EXECUTE FUNCTION fn_auditar_produto();

Use triggers quando a regra realmente pertence ao banco. Evite espalhar regras de negócio complexas em muitas triggers, pois isso dificulta entender o fluxo da aplicação.