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