Database
 sql >> Base de Dados >  >> RDS >> Database

Acionar no SQL


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:
  1. O SQL fornece uma maneira alternativa de manter os dados e a integridade referencial nas tabelas.
  2. Os gatilhos ajudam na execução automática das tarefas agendadas.
  3. Eles detectam os erros na camada de banco de dados de várias empresas.
  4. 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:
  1. Eles não são compilados.
  2. Não é possível encontrar e depurar os erros nos acionadores.
  3. Se usarmos o código complexo no gatilho, o aplicativo ficará mais lento.
  4. Trigger aumenta a alta carga no sistema de banco de dados.