TRIGGERS
Curso Profissional
Técnico de Gestão e Programação de Sistemas Informáticos
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
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.
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.
- 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.
- 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
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.
/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:
- 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
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.
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:
- 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.
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
- 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
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.