Os gatilhos no PostgreSQL são procedimentos que são executados automaticamente em resposta a determinados eventos em uma tabela ou visualização específica. Os acionadores em nível de linha são executados especificamente para cada linha afetada por um evento, como `INSERT`, `UPDATE` ou `DELETE`.
Uso
Os acionadores no nível da linha são utilizados para aplicar regras comerciais, validar dados ou manter o registro personalizado no nível da linha. Eles são definidos para executar ações específicas sempre que uma linha é modificada de uma maneira específica.
Nessa sintaxe, `FOR EACH ROW` especifica que o acionador será disparado para cada linha afetada, e `EXECUTE FUNCTION` chama a função que contém a lógica a ser executada.
Este exemplo registra os detalhes das linhas excluídas da tabela `orders` em um `delete_log` para fins de auditoria. Ele pressupõe que `OLD.id` corresponde à chave primária ou a um identificador exclusivo da linha.
Dicas e práticas recomendadas
Use os acionadores de forma criteriosa. O uso excessivo de acionadores pode levar a sistemas complexos e difíceis de depurar.
Garanta a atomicidade. A função de acionamento deve ser atômica e idempotente para manter a integridade dos dados.
Considere os impactos no desempenho. Os acionadores adicionam sobrecarga e são executados de forma síncrona com a operação de acionamento; certifique-se de que eles sejam otimizados para o desempenho, a fim de evitar a lentidão das operações do banco de dados.
Teste os acionadores minuciosamente. Garanta a realização de testes abrangentes para validar se os acionadores se comportam corretamente em todos os cenários.
Documentar a lógica de acionamento. Documente claramente a finalidade e a lógica de cada acionador para referência e manutenção futuras.
Informações adicionais
Variáveis especiais: Os triggers do PostgreSQL utilizam variáveis especiais como `TG_TABLE_NAME`, `NEW` e `OLD` para fornecer contexto. A variável `TG_TABLE_NAME` refere-se ao nome da tabela à qual o acionador está associado, a variável `NEW` contém os dados da nova linha para operações `INSERT` ou `UPDATE` e a variável `OLD` contém os dados da linha existente para operações `UPDATE` ou `DELETE`.
Os gatilhos no PostgreSQL são procedimentos que são executados automaticamente em resposta a determinados eventos em uma tabela ou visualização específica. Os acionadores em nível de linha são executados especificamente para cada linha afetada por um evento, como `INSERT`, `UPDATE` ou `DELETE`.
Uso
Os acionadores no nível da linha são utilizados para aplicar regras comerciais, validar dados ou manter o registro personalizado no nível da linha. Eles são definidos para executar ações específicas sempre que uma linha é modificada de uma maneira específica.
Nessa sintaxe, `FOR EACH ROW` especifica que o acionador será disparado para cada linha afetada, e `EXECUTE FUNCTION` chama a função que contém a lógica a ser executada.
Exemplos
1. Gatilho de inserção básico
Este exemplo cria um gatilho que registra cada nova operação `INSERT` na tabela `employees` em uma tabela `audit_log`.
2. Atualizar gatilho com condição
Aqui, um acionador evita reduções salariais ao gerar uma exceção se o novo salário for menor que o antigo durante uma `UPDATE`.
3. Excluir acionador com registro
Este exemplo registra os detalhes das linhas excluídas da tabela `orders` em um `delete_log` para fins de auditoria. Ele pressupõe que `OLD.id` corresponde à chave primária ou a um identificador exclusivo da linha.
Dicas e práticas recomendadas
Informações adicionais
Variáveis especiais: Os triggers do PostgreSQL utilizam variáveis especiais como `TG_TABLE_NAME`, `NEW` e `OLD` para fornecer contexto. A variável `TG_TABLE_NAME` refere-se ao nome da tabela à qual o acionador está associado, a variável `NEW` contém os dados da nova linha para operações `INSERT` ou `UPDATE` e a variável `OLD` contém os dados da linha existente para operações `UPDATE` ou `DELETE`.