Índice
PostgreSQL nos permite usar diferentes linguagens para realizar funções, esta funcionalidade é bastante útil e a torna uma das bases de dados mais flexíveis e poderosas, mas também nos permite fazer funciona como gatilhos, ou seja, funções que detectam automaticamente qual ação ocorreu e acionam uma ação diferente, ou seja, se inserirmos em uma tabela, por exemplo, um desencadear atualizar em outro, colocar uma operação bem básica do que é uma trigger.Funções como gatilhos
Nenhum mecanismo de banco de dados que vale a pena deve ser sem a capacidade de usar gatilhos para detectar e controlar automaticamente as alterações nos dados. PostgreSQL oferece gatilhos em nível de instrução e em nível de registro; aqueles que estão no nível de sentença são executados uma vez para cada sentença, enquanto aqueles que estão no nível de registros podem ser executados muitas vezes, por exemplo, se fizermos um ATUALIZAR que afeta 1.500 registros, um gatilho de nível de frase seria executado apenas uma vez, enquanto o gatilho de registro seria executado até 1.500 vezes.
Outro ponto importante neste tópico é a distinção feita entre as instruções ANTES DA, DEPOIS DE e a EM VEZ DE DO em um gatilho.
Um gatilho que funciona com ANTES DA dispara antes da execução do comando, dando a oportunidade de alterar, cancelar ou manipular os dados antes que eles mudem, um APÓS o gatilho é acionado após a execução da alteração, dando assim a oportunidade de obter os dados já modificados, este tipo de acionador é mais utilizado em logs e funções de replicação, o EM VEZ DE gatilho Ele roda em vez da ação que normalmente seria executada, também outra das peculiaridades disso é que ele só funciona com as visualizações.
Construir uma função com gatilho
Como quando falamos sobre funções sabemos que podemos usar outras linguagens para fazê-las, no caso de funções como gatilhos também é possível usar quase qualquer linguagem, porém o PL / pgSQL É um dos favoritos para cumprir estas tarefas, pois o seguinte exemplo que veremos na imagem será feito nesta linguagem, depois de vermos o exemplo iremos explicá-lo em detalhes:
1. A função é definida como um gatilho e pode ser usada em qualquer tabela que tenha uma coluna upd_ts. O valor desta coluna será alterado antes de fazer a devolução. A ligação é feita no evento ANTES DA porque se fosse usado no DEPOIS DE todas as alterações no novo registro seriam ignoradas.
2. O gatilho será disparado antes que o registro seja armazenado.
3. Esta funcionalidade está disponível apenas em PostgreSQL 9.0 ou superior permite-nos apenas modificar os registros que realmente foram afetados, nas versões anteriores era necessário fazer comparações entre o antigo e o novo campo, porém isso não é suportado para o evento INSTEAD OF.
4. Vinculamos o Trigger à mesa.
Com isso finalizamos este tutorial onde vimos como criar um Trigger que será implementado em uma função, além de saber quais eventos podemos utilizar quando precisarmos deles.Gostou e ajudou este tutorial?Você pode recompensar o autor pressionando este botão para dar a ele um ponto positivo