Melhores Práticas para Funções
Funções de banco de dados centralizam a lógica, mas ocultam o comportamento das implantações de aplicativos.
Como Usar Esta Lista
- Catalogue todas as funções SECURITY DEFINER trimestralmente.
- Prefira funções SQL para transformações simples.
A - Design
- Função SQL antes de PL/pgSQL. O planejador pode embutir.
- Mantenha as funções puras e pequenas. Mova a orquestração para o aplicativo quando for complexo.
- Rótulos de volatilidade corretos. IMMUTABLE apenas quando verdadeiramente puro.
B - Segurança
- Padrão SECURITY INVOKER. RLS se aplica.
- Funções DEFINER: SET search_path. Revogue a execução PUBLIC.
- Conceda EXECUTE minimamente. Acesso baseado em função.
C - Testes
- Teste em transações revertidas. Loops rápidos de CI.
- pgTAP para suíte de regressão. Versione com migrações.
- Documente efeitos colaterais. Mutações vs. leituras.
FAQs
Procedimentos armazenados estão substituindo o código do aplicativo?
Apenas para fluxos de trabalho de dados estritamente acoplados; mantenha as regras de negócios visíveis no repositório.
Relacionado
- Noções Básicas de Funções - introdução
- Melhores Práticas para Triggers - quando não duplicar a lógica
Versões da Stack: Esta página foi escrita para PostgreSQL 18.4 (estável 18, manutenção 17), pgvector 0.8+, PgBouncer 1.x, Patroni 3.x e PostGIS 3.5+.