8
MYSQL TRIGGERS

Tutorial MySQL - Triggers

Embed Size (px)

Citation preview

Page 1: Tutorial MySQL - Triggers

MYSQL

TRIGGERS

Page 2: Tutorial 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.

Page 3: Tutorial 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

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.

Page 4: Tutorial 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 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)

Page 5: Tutorial 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

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

Page 6: Tutorial 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

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.

Page 7: Tutorial 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

- 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:

Page 8: Tutorial 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

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.