triggers - patriciamateus

Propaganda
TRIGGERS
ADMINISTRAÇÃO DE BASES DE DADOS
Curso de Educação e Formação de Adultos – Turma de Qualificação Escolar de Nível
Secundário
Técnico/a de Informática de Sistemas
Formadora: Patrícia Mateus
Objectivos
•
•
Identificar os conceitos relacionados com TRIGGERS
Criar e editar TRIGGERS
TRIGGERS
Os Triggers são operações da base de dados que são automaticamente
executadas quando é utilizado um comando INSERT, DELETE ou UPDATE.
A criação de um Trigger envolve duas etapas:
1. Um comando SQL que vai disparar o Trigger (INSERT, DELETE, UPDATE)
2. A acção que o Trigger vai executar (Geralmente um bloco de códigos SQL)
O trigger pode ser accionado imediatamente antes (BEFORE) ou imediatamente
depois (AFTER) de cada evento.
Criar um trigger
O comando CREATE TRIGGER é usado para adicionar triggers ao esquema da
base de dados.
SINTAXE
CREATE TRIGGER <nome_do_trigger>
AFTER|BEFORE INSERT|UPDATE|DELETE
ON <tabela>
BEGIN
<codigo>
END
AFTER|BEFORE
O trigger pode ocorrer antes ou depois das modificações serem aplicadas.
INSERT|UPDATE|DELETE
O trigger ocorre quando é executado quando é inserido, ou modificado, ou
eliminado, um registo da tabela.
Em que:
<nome_do_trigger> - nome do trigger.
<tabela> - nome da tabela à qual vai estar associado o trigger
<codigo> - código a executar no caso de ocorrer
insert|update|delete.
um
2
EXEMPLO
Para este exemplo vamos recorrer à base de dados clube de vídeo, que é
constituída pelas tabelas filmes e aluguer.
Vamos ainda criar a tabela filme_inserido_removido. Nesta tabela vai ficar
registado sempre que um filme for inserido/removido. A informação a guardar será: o
código do filme, a data e o tipo de operação (Inserido/removido) efectuada.
Para criar a tabela recorra ao separador SQL e digite o código seguinte:
Para criar um TRIGGER, na base de dados clube de vídeo, deve proceder do
seguinte modo:
1.
2.
Escolher a tabela à qual vamos associar o TRIGGER, neste caso a tabela
filmes;
No separador Design, clicar em TRIGGERs;
3.
Clicar no botão Add e preencher a janela com a seguinte informação:
3
O nome do TRIGGER será “filme_inserido” e vai ocorrer depois (AFTER) de o
comando INSERT ser executado na tabela “filmes”.
Sempre que um filme for inserido na tabela filmes, o trigger filme_inserido vai
inserir o código do novo filme, a data actual e a operação realizada.
4.
Vamos então executar o seguinte código sql:
Este código vai inserir um novo registo na tabela filmes.
5.
Pode agora consultar a tabela filme_inserido_removido para verificar se
existe algum novo registo introduzido.
Clique na tabela e aceda ao separador data. Como pode verificar existe
uma nova entrada na tabela, que corresponde ao registo que inseriu na
tabela filmes.
6.
Vamos ainda criar um TRIGGER para quando um registo é eliminado da
tabela filmes.
Clique na tabela filmes, e aceda ao separador Design, TRIGGERs;
Clique no botão ADD e crie o seguinte TRIGGER.
7.
8.
9.
Clique no separador SQL e execute o código que permite eliminar o filme
número 5 , da tabela filmes.
4
10. Basta agora verificar a tabela filme_inserido_removido, onde surge o novo
registo, correspondente ao filme eliminado.
Referência a valores antigos e novos: a cláusula de referência
Por vezes, no codigo a executar pelo trigger, temos necessidade de fazer
referência a valores novos ou antigos.
No exemplo de trigger acima pode ver nomes de campos precedidos das
palavras“NEW” e “OLD”.
No corpo de uma tabela fica disponível tanto o valor antigo como o novo valor
de qualquer coluna, por exemplo old.codfilme e new.codfilme. Quando pretendemos
ir buscar um novo valor inserido utilizamos new e depois o nome do campo
(new.codFilme). Por exemplo, no caso do Insert utilizamos new.
Quando pretendemos ir buscar o valor de um campo removido, utilizamos old
(old.codFilme).
Alterar TRIGGERS
Para alterar um TRIGGER, basta clicar na tabela e aceder ao separador Design >
Triggers.
Na lista de triggers definidos, deve dar duplo clique no que pretende e efectuar
as alterações.
Para eliminar um TRIGGER, basta clicar no mesmo e pressionar Delete.
5
Download