Os triggers do PostgreSQL são funções de retorno de chamada do banco de dados que são executadas automaticamente ou "acionadas" quando ocorre um evento especificado no banco de dados, como um `INSERT`, `UPDATE`, `DELETE` ou `TRUNCATE`. Eles são usados para manter a integridade dos dados, aplicar regras comerciais ou realizar registros e auditorias.
Uso
Os acionadores são usados quando você precisa automatizar tarefas em resposta a alterações nos dados de uma tabela. Eles são particularmente úteis para manter a consistência e implementar lógica comercial complexa no nível do banco de dados.
Nessa sintaxe, `CREATE TRIGGER` define um novo acionador chamado `trigger_name`, especificando quando ele deve ser acionado (`BEFORE`, `AFTER` ou `INSTEAD OF`), qual evento deve acioná-lo (`INSERT`, `UPDATE`, `DELETE` ou `TRUNCATE`) e a tabela à qual ele se aplica (`ON table_name`). O `EXECUTE PROCEDURE` chama a função que contém a lógica de acionamento.
Este exemplo cria um acionador que registra uma entrada na `log_table` toda vez que uma nova linha é inserida na `main_table`.
2. Acionador para aplicar a regra de negócios
sql
CREATEORREPLACEFUNCTIONcheck_salary()RETURNSTRIGGERAS $$
BEGINIFNEW.salary <1000THENRAISEEXCEPTION'Salary cannot be less than 1000';ENDIF;RETURNNEW;END;
$$ LANGUAGE plpgsql;CREATETRIGGER salary_check
BEFOREINSERTORUPDATEON employees
FOREACHROWEXECUTEPROCEDUREcheck_salary();Tecnologia
Aqui, um acionador garante que o salário de qualquer funcionário não seja definido abaixo de 1.000, seja na inserção ou na atualização.
sql
DROPTRIGGER trigger_name ON table_name;Tecnologia
Dicas e práticas recomendadas
Mantenha os acionadores simples e eficientes. A lógica complexa pode tornar as operações do banco de dados mais lentas. Tenha cuidado com as implicações de desempenho, especialmente em ambientes altamente transacionais.
Use acionadores para restrições críticas. Garanta que as regras comerciais essenciais sejam aplicadas no nível do banco de dados.
Limite os efeitos colaterais. Os acionadores devem evitar alterar o estado do banco de dados de forma inesperada.
Acionadores de documentos. Mantenha uma documentação clara de cada acionador para ajudar os futuros desenvolvedores a entender sua finalidade.
Faça um teste completo. Garantir que os acionadores funcionem conforme o esperado, testando com vários cenários e casos extremos.
Tenha em mente a ordem de execução. Entenda a ordem de execução quando vários acionadores são definidos para o mesmo evento em uma tabela.
Lidar com chamadas recursivas. Esteja ciente das possíveis chamadas de acionamento recursivas e implemente proteções quando necessário.
Os triggers do PostgreSQL são funções de retorno de chamada do banco de dados que são executadas automaticamente ou "acionadas" quando ocorre um evento especificado no banco de dados, como um `INSERT`, `UPDATE`, `DELETE` ou `TRUNCATE`. Eles são usados para manter a integridade dos dados, aplicar regras comerciais ou realizar registros e auditorias.
Uso
Os acionadores são usados quando você precisa automatizar tarefas em resposta a alterações nos dados de uma tabela. Eles são particularmente úteis para manter a consistência e implementar lógica comercial complexa no nível do banco de dados.
Nessa sintaxe, `CREATE TRIGGER` define um novo acionador chamado `trigger_name`, especificando quando ele deve ser acionado (`BEFORE`, `AFTER` ou `INSTEAD OF`), qual evento deve acioná-lo (`INSERT`, `UPDATE`, `DELETE` ou `TRUNCATE`) e a tabela à qual ele se aplica (`ON table_name`). O `EXECUTE PROCEDURE` chama a função que contém a lógica de acionamento.
Exemplos
1. Gatilho básico na inserção
Este exemplo cria um acionador que registra uma entrada na `log_table` toda vez que uma nova linha é inserida na `main_table`.
2. Acionador para aplicar a regra de negócios
Aqui, um acionador garante que o salário de qualquer funcionário não seja definido abaixo de 1.000, seja na inserção ou na atualização.
3. Acionador para registro de auditoria
Este exemplo captura as alterações em `any_table` registrando os dados da linha antiga e da nova em uma tabela `audit_log` após cada atualização.
Gerenciamento de acionadores
Para desativar um acionador:
Para ativar um acionador:
Para excluir um acionador:
Dicas e práticas recomendadas