Triggers
Seminário: Triggers. Pesquise 861.000+ trabalhos acadêmicosPor: Lineee94 • 6/12/2013 • Seminário • 1.120 Palavras (5 Páginas) • 333 Visualizações
Triggers
Uma triggers é um comando que o sistema executa automaticamente como um efeito colateral de uma modificação no banco de dados.
Para criar um mecanismo de trigger, primeiro precisamos atender a dois requisitos:
1- Especificar quando uma trigger deve ser executada. Isso é dividido em um evento que faz com que a trigger seja verificada e uma condição que deve ser satisfeita para que a execução da trigger prossiga.
2- Especificar as ações a serem tomadas quando a trigger for executada.
Quando entramos com uma trigger no banco de dados, o sistema de banco de dados assume a responsabilidade de executa-la sempre que o evento especificado ocorre e a condição correspondente é satisfeita.
Necessidades de triggers
As triggers podem ser usadas para implementar certas restrições de integridade que não podem ser especificadas usando o mecanismo de restrição da SQL. As triggers também são mecanismo uteis para alertar as pessoas ou iniciar certas tarefas automaticamente quando certas condições são atendidas.
Observando que os sistemas de trigger normalmente não podem realizar atualizações fora do banco de dados e, portanto, no exemplo de reposição de estoque, não podemos usar uma trigger para fazer um pedido no mundo exterior.
Triggers em SQL
A sintaxe que apresentamos aqui é definida pelo padrão SQL, mas a maioria dos banco de dados implementa versões dessa sintaxe fora do padrão. Embora a sintaxe que apresentamos aqui possa não ser aceita em tais sistemas, os conceitos que descrevemos se aplicam entre as implementações.
A primeira definição de trigger na especifica que a trigger é iniciada após qualquer inserção na relação seção e garante que o valor de id_período sendo inserido seja válido. Um comando insert da SQL poderia inserir várias tuplas na relação, e a clausula for each row no código da trigger percorria explicitamente cada linha inserida. A clausula referencing new row as crias uma variável linha nova( chamada variável de transição) que armazena valor de uma linha inserida após a inserção.
No exemplo abaixo mostra como as tringgers podem ser usadas para garantir a integridade referencial sobre o atributo id_período da relação seção.
Create trigger verif_periodo1 after insert on seção
Referencing new row as linha nova
For each row
When ( linha nova.id_periodo not in
( select id_periodo
From período)) /*id_periodo não presente em período/*
begin
rollback
end;
create trigger verif_periodo2 after delete on período
referencing old row as linhaant
for each row
when ( linhaAnt.id_periodo not in
( select id_periodo
From período) /*ultima tupla para id_periodo excluída de período */
And linhaAnt.id_periodo in
Begin
Rollback
End;
No exemplo acima considera o caso de exclusões em período. Essa trigger verifica se a id_periodo da tupla sendo excluída ainda esta presente em período ou se nenhuma tupla em seção contem esse valor em particular de id_periodo;caso contrario, a integridade referencial seria violada.
A clausula referencing old row as pode ser usada para criar uma variável armazenando o valor antigo de uma linha atualizada ou excluída. A clausula referencing old row as pode ser usada com atualizações além de inserções.
No próximo exemplo como uma trigger pode ser usada para manter o valor do atributo tot_cred de tuplas aluno atualizado quando o atributo nota é atualizado para uma tupla na relação realizada. A trigger é executada apenas quando atributo nota é atualizado de um valor nulo ou ‘F’ para um valor que indica que o curso foi concluído com sucesso. O comando update adota a sintaxe SQL normal, exceto no uso da variável linhaNova.
Create trigger créditos_ganhos after update of realiza on (nota)
Referencing
...