Sintaxe:
A seguir está a sintaxe simples para gerar um gatilho:
>> CREATE TRIGGER trigger_name [ANTES | DEPOIS | INSTEAD OF] nome do evento ON nome_tabela [---- Trigger Logic];Aqui está a explicação da consulta geral acima.
- Trigger_name: Nome de um gatilho
- ANTES, DEPOIS, EM VEZ DE: Termos que decidem quando o acionador estaria ativo
- Nome do evento: Título da ocorrência que pode disparar o gatilho (pode ser INSERT, UPDATE ou DELETE)
- Nome da tabela: Especifica a tabela sobre a qual o gatilho será construído
Para entender o conceito de gatilho brevemente, inicie o shell PostgreSQL a partir dos aplicativos. Altere o servidor se quiser trabalhar em outro servidor ou pressione Enter no teclado. Adicione o nome do banco de dados com o qual deseja trabalhar, caso contrário, deixe como está e toque em entrar. Como você pode ver, atualmente estamos trabalhando na porta 5432 como padrão; você também pode mudar isso. Depois disso, forneça um nome de usuário diferente de Postgres se quiser trabalhar com outro usuário, ou então deixe em branco e pressione o botão Enter. Agora seu shell de comando está pronto para ser usado.
TRIGGER após o comando INSERT
Vejamos o exemplo de um gatilho quando o comando INSERT foi usado como um evento gatilho. Para isso, temos que criar duas novas tabelas, e.g., “Empregar” e “auditar”. A tabela "empregar" conterá os registros pessoais dos funcionários de uma empresa específica e a tabela "auditoria" conterá as informações sobre quando os funcionários ingressaram na empresa. As consultas para a criação das tabelas são fornecidas abaixo.
>> CREATE TABLE Employ (ID INTEGER NOT NULL PRIMARY KEY, Nome VARCHAR (100) NOT NULL, Idade VARCHAR (100) NOT NULL, Salário VARCHAR (100) NOT NULL);>> CREATE TABLE audit (empid INTEGER NOT NULL, entry_date VARCHAR (100) NOT NULL);
Você tem que criar um procedimento que será executado automaticamente ou funcionará quando o gatilho for chamado. Será usado no próximo comando CREATE TRIGGER. A partir do comando abaixo, você pode ter uma ideia de que estamos criando um procedimento “auditlogfunc ()”, que retornará um gatilho como variável “$ examp_table $”. A função começa com a cláusula BEGIN, seguida pela instrução INSERT. Esta instrução INSERT insere id automática e data-hora atual usando a função embutida na tabela de “auditoria” e retornando este resultado para TRIGGER.
É hora de gerar um TRIGGER usando o comando CREATE TRIGGER. Nós criamos uma trigger chamada “emp_trig” na tabela “Employ”. A cláusula AFTER INSERT ON significa que este gatilho só funcionará após a execução do comando de inserção. PARA CADA LINHA significa na execução de cada comando INSERT, este gatilho irá chamar e executar o procedimento “auditlogfunc ()” criado antes.
>> CRIAR ACIONADOR emp_trig APÓS INSERIR EM EMPREGO PARA CADA PROCEDIMENTO DE EXECUÇÃO DE LINHA auditlogfunc ();
É hora de inserir alguns dados na tabela “empregar”. Execute o comando INSERT abaixo no shell.
>> INSERIR EM emprego (ID, Nome, Idade, Salário) VALORES ('1', 'Paulo', '34', '60000');
Dê uma olhada na tabela “empregar”. Os dados foram adicionados com sucesso com o comando INSERT.
Agora dê uma olhada na tabela de "auditoria". Você pode ver, ele também é atualizado devido ao gatilho “emp_trig” e auditlogfunc ().
TRIGGER Upon UPDATE Command
Estaremos agora olhando para um exemplo de um gatilho usando o comando UPDATE como um evento de gatilho. Temos que criar um novo procedimento novamente com o nome diferente de "atualização", conforme apresentado na imagem. Este procedimento também irá inserir registros na tabela de 'auditoria' mediante chamada.
Agora, crie um novo gatilho chamado “update_emp” usando o comando CREATE TRIGGER. Isto só funcionará após a execução da consulta UPDATE na tabela empregada e chamará o procedimento de “atualização”.
Atualize a tabela "empregar", definindo seu ID para "2".
Busque os registros de uma tabela “empregar” para ver as mudanças conforme anexado abaixo.
Como você pode ver na tabela “auditoria”, ela foi reorganizada conforme a tabela “empregar” foi atualizada.
TRIGGER após o comando DELETE
Abra o pgAdmin 4 dos aplicativos para trabalhar na GUI PostgreSQL. No esquema “teste”, você descobrirá uma lista de tabelas. Crie uma nova tabela “emp” e a mesma tabela “audit”.
Desta vez, vamos invocar o comando de gatilho pelo comando DELETE. Abaixo está a tabela “emp” com alguns registros.
Aqui está a tabela de auditoria com as duas atualizações anteriores.
Crie um procedimento denominado “Del ()” para acionar a inserção na tabela “audit” ao excluir os registros da tabela “emp”.
Crie um gatilho “del_trig” usando a consulta CREATE TRIGGER. Esta trigger irá executar o procedimento “Del” quando alguma cláusula DELETE for executada na tabela “emp”.
Vamos deletar um registro da tabela “emp” onde o funcionário “id” é “5”. Ele irá deletar uma linha da tabela “emp”.
Pegue os registros da tabela “emp” e dê uma olhada nela. Você pode ver que a linha foi removida onde o “id” era “5”.
Agora extraia os registros da tabela “audit” e você notará que ela foi atualizada porque a operação DELETE foi realizada na tabela “emp”.
Conclusão:
Fizemos quase todos os exemplos essenciais para entender o conceito de TRIGGER ao executar as operações INSERT, UPDATE e DELETE.