Você está na página 1de 8

MYSQL

TRIGGERS
Curso Profissional
Técnico de Gestão e Programação de Sistemas Informáticos

Programação e Sistemas de Informação


12.º Ano – Turma K

TRIGGERS – Temas abordados

1 - Introdução ao SQL Triggers


SQL Trigger é uma instrução SQL ou um conjunto de instruções SQL ,que fica armazenado , é
será activado ou disparado quando um evento ocorrer numa tabela.

2 - Implementação de Trigger em MySQL


O MySQL finalmente suporta uma das características mais importantes de um servidor de base
de dados desde a versão 5.0.2. Os Trigger são implementado no MySQL, seguindo a sintaxe
padrão SQL: 2003.

3 - Criar o primeiro trigger no MySQL


Você vai aprender a criar o primeiro trigger no MySQL.

4 - GerirTriggers no MySQL
Neste tutorial, você aprenderá como recuperar informações associadas a um trigger. Você
também aprenderá a eliminar um trigger.
Curso Profissional
Técnico de Gestão e Programação de Sistemas Informáticos

Programação e Sistemas de Informação


12.º Ano – Turma K

1 - Introdução ao SQL Triggers

SQL Trigger é uma instrução SQL ou um conjunto de instruções SQL ,que fica armazenado , é
será activado ou disparado quando um evento ocorrer numa tabela. O evento pode ser
INSERT, UPDATE ou DELETE.

Às vezes, um trigger é referido como um tipo especial de stored procedure em termos de


código dentro de seu corpo.

A diferença entre um trigger e um stored procedure é que o trigger é ativado ou chamado


quando um evento acontece numa tabela, um stored procedure deve ser chamado
explicitamente.

Por exemplo, podemos fazer algumas acções na base de dados antes ou depois de inserir um
novo registo.

Antes de aplicar triggers na sua base de dados, você deve saber seus prós e contras de usá-lo
corretamente.

Vantagens da utilização de Triggers

- Os SQLTriggers fornecem uma forma alternativa para verificar a integridade.

- Os SQLTriggers podem detectar, minimizar ou eliminar os erros de lógica na base de dados.

- Os SQLTriggers fornecem uma forma alternativa de executar tarefas agendadas. Com SQL
trigger, você não tem que esperar para executar as tarefas agendadas. Você pode lidar com
essas tarefas antes ou após as alterações feitas nas tabelas da base de dados.

- SQL triggers são muito úteis para auditar mudanças de dados numa tabela da base de dados.

Desvantagens de usar triggers

- SQL trigger pode apenas fornecer validação estendida, não pode substituir todas as
validações. Algumas validações simples podem ser feitas no nível de aplicativo. Por exemplo,
você pode validar ou verificar a entrada no lado cliente usando JavaScript ou no lado do
servidor pelo script de servidor utilizando PHP ou ASP.NET.

- SQL Triggers executam de forma invisível a relação cliente-servidor assim é difícil descobrir o
que aconteceu na camada de base de dados subjacente.
Curso Profissional
Técnico de Gestão e Programação de Sistemas Informáticos

Programação e Sistemas de Informação


12.º Ano – Turma K

Triggers ou stored procedures? Depende da situação, em prática, se você não tem nenhuma
maneira de começar o trabalho usando stored procedures, use Triggers.

2 - Implementação de Trigger em MySQL


O MySQL finalmente suporta uma das características mais importantes de um servidor de base
de dados desde a versão 5.0.2. Os Trigger são implementado no MySQL, seguindo a sintaxe
padrão SQL: 2003. Quando você cria um trigger no MySQL, as suas definição são guardadas no
arquivo com extensão .TRG numa pasta da base de dados com a suguintes especificações:

/data_folder/database_name/table_name.trg

O arquivo está em formato de texto, você pode usar qualquer editor de texto para modificá-lo.

Quando um trigger é implementado no MySQL, este tem todos os recursos do standard SQL,
mas existem algumas restrições que você deve estar ciente:

- Não é permitido chamar um stored procedure em um trigger.

- Não é permitido criar um trigger para uma view ou a tabela temporária.

- Não é permitido o uso de transacções (commit e roolback) num trigger.

- A declaração de retorno (return) não é permitida num trigger.

- Criar um trigger para uma tabela da base de dados faz com que o cache de consultas seja
invalidado.

- Todos os triggers para uma tabela da base de dados deve ter nome único.

É permitido que triggers para tabelas diferentes com o mesmo nome, mas é recomendado que
dentro da mesma base de dados sejam dados nomes diferentesaos triggers. Para criar o
trigger, tem de se usar a seguinte sixtaxe:.(BEFORE | AFTER) _tableName_ (INSERT | UPDATE |
DELETE)
Curso Profissional
Técnico de Gestão e Programação de Sistemas Informáticos

Programação e Sistemas de Informação


12.º Ano – Turma K

3 - Criar o primeiro trigger no MySQL


Vamos começar criando o primeiro trigger no MySQL, seguindo um cenário simples. No banco
de dados de exemplo, temos tabela employees da seguinte forma:

Agora você deseja guardar as alterações de dados na tabela employees em outra tabela
sempre que os dados de registo de um funcionário mudar. Para fazer isto você cria uma nova
tabela chamada employees_audit para acompanhar as mudanças.

A fim de acompanhar as mudanças do campo lastname, podemos criar um trigger que é


accionado antes de fazer qualquer atualização na tabela de funcionários. Aqui está o código-
fonte do trigger
Curso Profissional
Técnico de Gestão e Programação de Sistemas Informáticos

Programação e Sistemas de Informação


12.º Ano – Turma K

Você pode testar o trigger que criou, atualizando o lastname de um funcionário na tabela
employees.

Suponha que nós atualizamos o sobrenome do funcionário que tem o número do funcionário é
de 3:

Agora, quando você pode ver as alterações controladas automaticamente na tabela


employees_audit executando a seguinte consulta

Para criar um trigger você usa a seguinte sintaxe:

- CREATE TRIGGER é usado para criar triggers.

- O nome do trigger deve seguir a convenção [trigger time]_[table name]_[trigger event], por
exemplo before_employees_update.

- Trigger_time pode ser BEFORE or AFTER. Você deve especificar o Trigger_time quando define
um trigger. Use BEFORE, quando você deseja processar acção antes da mudança a ser feita
numa tabela e AFTER, se você precisa para processar acção depois que as mudanças serem
feitas.

- Trigger_event pode ser INSERT, UPDATE e DELETE.

These events cause trigger to fire and process logic inside trigger body. Um trigger pode
disparar apenas com um evento. Para definir trigger que iniciem múltiplos eventos, você tem
que definir vários triggers, uma para cada evento. De referir que todas as declarações SQL de
actualização dos dados na tabela da base de dados irá causar que o trigger seja “disparado”.

- Um trigger deve estar associado a uma tabela específica. Sem uma tabela o trigger não
existe, por isso você tem que especificar o nome da tabela após a palavra chave ON.
Curso Profissional
Técnico de Gestão e Programação de Sistemas Informáticos

Programação e Sistemas de Informação


12.º Ano – Turma K

- O MySQL fornece o palavras reservadas OLD e NEW para ajudar a escrever triggers mais
eficientes.

- A palavra reservada OLD refere-se à linha existente antes da actualização dos dados e as
palavra reservada NEW refere-se à nova linha após a atualização de dados.

4 - GerirTriggers no MySQL
Uma vez criado o trigger e associado a uma tabela, você pode ver o trigger, indo diretamente
para a pasta que contém o trigger.

Trigger é armazenada como arquivo de texto na pasta da base de dados da seguinte forma: /
Data_Folder / database_name / table_name.trg, com qualquer editor de texto simples como o
bloco de notas você pode visualizar o código do trigger.

O MySQL fornece-lhe uma outra maneira de ver o código do seu trigger, executando a
seguinte instrução SQL:

Deste modo, você não vê apenas o conteúdo do trigger, mas também outros metadados
associados a ele, como nome da tabela, definidor (nome do MySQL, que criou o trigger).

Para encontrar todos os triggers associados a uma base de dados, basta executar a seguinte
instrução SQL:

Para encontrar todos os triggers associados a uma tabela da base de dados, basta executar a
seguinte instrução SQL:

No MySQL você não só são capazes de ver o trigger, mas também remover um trigger
existente. Para remover um trigger você pode usar a instrução SQL DROP TRIGGER como
segue:
Curso Profissional
Técnico de Gestão e Programação de Sistemas Informáticos

Programação e Sistemas de Informação


12.º Ano – Turma K

Por exemplo, se você quer apagar o trigger before_employees_update associado à tabela


employees, você pode executar o seguinte script:

Para modificar um trigger, você deve excluí-lo e recriá-lo. O MySQL não lhe fornecer instrução
SQL para alterar um gatilho existente, como alteração de objetos de bases de dados, tais como
tabelas e stored procedures.

Você também pode gostar