Neste artigo, aprenderemos sobre o conceito de trigger em SQL e sua implementação com a ajuda de um exemplo.
Um Trigger em Structured Query Language é um conjunto de instruções procedurais executadas automaticamente quando há algum feedback para determinados eventos na tabela do banco de dados. Os gatilhos são usados para proteger a integridade dos dados no banco de dados.
Vamos ver a seguinte situação para entender o conceito de trigger no SQL:
Suponha que Supriya seja o gerente de tecnologia da informação em uma empresa multinacional. Quando o registro de um novo funcionário é inserido no banco de dados, ele deve enviar a mensagem de 'Parabéns' para cada novo funcionário. Se houver cinco ou seis funcionários, Supriya pode fazê-lo manualmente, mas se o número de novos funcionários for superior a mil, então, nessa condição, ela deve usar o gatilho no banco de dados.
Assim, Supriya deve criar o gatilho na tabela, que enviará automaticamente uma mensagem de 'Parabéns' aos novos funcionários assim que seu registro for inserido no banco de dados.
O trigger é sempre executado com a tabela específica no banco de dados. Se removermos a tabela, todos os gatilhos associados a essa tabela também serão excluídos automaticamente.
Os acionadores na Linguagem de Consulta Estruturada são chamados apenas antes da ocorrência dos eventos ou após a ocorrência dos eventos.
Apenas três eventos ocorrem no gatilho antes ou depois dos eventos são os eventos Insert, os eventos Update ou os eventos Delete.
1. INSERIR evento :O evento Insert ocorre sempre que um novo registro é inserido na tabela.
2. Evento de ATUALIZAÇÃO :Um evento de atualização ocorre sempre que os registros existentes são atualizados na tabela.
3. EXCLUIR evento: O evento Delete ocorre sempre que o registro é excluído da tabela.
Tipos de acionadores na linguagem de consulta estruturada
A seguir estão os seis tipos de gatilhos usados na linguagem de consulta estruturada:
1. APÓS INSERIR Acionador:
O gatilho após inserção é invocado no SQL depois que os registros são inseridos na tabela.
2. APÓS ATUALIZAÇÃO Acionador:
O gatilho after update é invocado no SQL depois que os registros existentes na tabela são atualizados.
3. APÓS EXCLUIR Acionador:
O gatilho após a exclusão é invocado no SQL depois que o registro é excluído da tabela.
4. ANTES DE INSERIR Acionador:
O gatilho antes de inserir é invocado no SQL antes que os registros sejam inseridos na tabela.
5. ANTES DA ATUALIZAÇÃO Acionador:
O gatilho antes da atualização é invocado no SQL antes que os registros existentes na tabela sejam atualizados.
6. ANTES DE EXCLUIR Acionador:
O gatilho antes da exclusão é invocado no SQL antes que o registro seja excluído da tabela.
Sintaxe do gatilho no SQL:
CREATE TRIGGER Trigger_Name
[BEFORE | AFTER] [Insert | Update | Delete]
ON [Table_Name]
[FOR EACH ROW | FOR EACH COLUMN]
AS
Set of SQL Statement
- Na sintaxe do gatilho, temos que definir o nome do gatilho logo após a palavra-chave CREATE TRIGGER na sintaxe.
- Depois do nome do gatilho, temos que definir qual gatilho queremos invocar, o gatilho antes ou a palavra-chave do gatilho posterior com o nome do evento.
- Depois, temos que mencionar o nome da tabela em que o gatilho ocorreu.
- Após o nome da tabela, devemos definir o gatilho no nível da linha ou no nível da coluna.
- E no final, temos que escrever a instrução SQL que atua nos eventos que ocorrem.
Exemplo de gatilho em SQL
Para entender o conceito de trigger no SQL, temos que criar uma tabela na qual o trigger deve ser executado.
A consulta a seguir cria a tabela Student no banco de dados SQL.
CREATE TABLE Student(
Student_rollno INT NOT NULL PRIMARY KEY,
FirstName varchar(40),
English_Marks INT,
Physics_Marks INT,
Chemistry_Marks INT,
Biology_Marks INT,
Maths_Marks INT,
Total_Marks INT,
Percentage INT);
A consulta a seguir mostra a estrutura da tabela Aluno:
Aluno DESC;
Campo | Tipo | NULO | Chave | Padrão | Extras |
Student_RollNo | INT | NÃO | PRI | NULO | |
First_Name | Varchar(40) | SIM | NULO | ||
English_Marks | INT | SIM | NULO | ||
Marcas_Físicas | INT | SIM | NULO | ||
Marcas_Química | INT | SIM | NULO | ||
Marcas_Biologia | INT | SIM | NULO | ||
Maths_Marks | INT | SIM | NULO | ||
Total_Marks | INT | SIM | NULO | ||
Porcentagem | INT | SIM | NULO |
A consulta a seguir aciona o gatilho antes da inserção do registro do aluno na tabela:
CREATE TRIGGER Student _Marks
BEFORE INSERT
ON
Student
FOR EACH ROW
SET new.Total_Marks = new.English_Marks + new.Physics_Marks + new.Chemistry_Marks + new.Biology_Marks + new.Maths_Marks,
new.Percentage = ( new.Total_Marks / 500) * 100;
As consultas a seguir inserem o registro na tabela Aluno.
INSERT INTO Student (Student_RollNo, First_Name, English_Marks, Physics_Marks, Chemistry_Marks,Biology_Marks, Maths_Marks, Total_Marks, Percentage) VALUES ( 1, ‘Raman’, 90, 80, 75, 70 ,92, 0, 0);
Para verificar a saída da instrução INSERT acima, você deve digitar a seguinte instrução SELECT:
SELECT * FROM Student
Saída:
Student_RollNo | First_Name | English_Marks | Marcas_Físicas | Marcas_químicas | Marcas_Biologia | Maths_Marks | Total_Marks | Porcentagem |
1 | Raman | 90 | 80 | 75 | 70 | 92 | 407 | 81 |
Vantagens dos gatilhos no SQL
A seguir estão as três principais vantagens dos gatilhos na Linguagem de Consulta Estruturada:
- O SQL fornece uma maneira alternativa de manter os dados e a integridade referencial nas tabelas.
- Os gatilhos ajudam na execução automática das tarefas agendadas.
- Eles detectam os erros na camada de banco de dados de várias empresas.
- Eles permitem que os usuários do banco de dados validem valores antes de inserir e atualizar.
Desvantagens dos gatilhos no SQL
A seguir estão as principais desvantagens dos gatilhos na Linguagem de Consulta Estruturada:
- Eles não são compilados.
- Não é possível encontrar e depurar os erros nos acionadores.
- Se usarmos o código complexo no gatilho, o aplicativo ficará mais lento.
- Trigger aumenta a alta carga no sistema de banco de dados.