EXEMPLOS TRIGGERS

4376 palavras 18 páginas
Exemplos de triggers (cont)
2. Alterac¸a˜ o do sal´ario de um ou mais empregados
3. Mudanc¸a de empregados de um departamento para outro.
R2: CREATE TRIGGER TotalSal2
AFTER UPDATE OF Salario ON Empregado
FOR EACH ROW
WHEN (NEW.Ndep IS NOT NULL)
UPDATE Departamento
SET TotalSal=TotalSal+NEW.Salario-OLD.Salario
WHERE Dnum=NEW.Ndep;
R3: CREATE TRIGGER TotalSal3
AFTER UPDATE OF Ndep ON Empregado
FOR EACH ROW
BEGIN
UPDATE Departamento
SET TotalSal=TotalSal+NEW.Salario
WHERE Dnum=NEW.Ndep;
UPDATE Departamento
SET TotalSal=TotalSal-OLD.Salario
WHERE Dnum=OLD.Ndep;
END;
42

Exemplos de triggers (cont)
4. Remover um ou mais empregados.
R4: CREATE TRIGGER TotalSal4
AFTER DELETE ON Empregado
FOR EACH ROW
WHEN (OLD.Ndep IS NOT NULL)
UPDATE Departamento
SET TotalSal=TotalSal-OLD.Salario
WHERE Dnum=OLD.Ndep;

43

Triggers (cont.)
A execuc¸a˜ o da acc¸a˜ o pode ser condicionada:

– AFTER – a condic¸a˜ o WHEN e´ testada depois do evento-de-disparo.
– BEFORE – a condic¸a˜ o WHEN e´ testada antes do evento-de-disparo.
– INSTEAD OF – a acc¸a˜ o e´ executada se a condic¸a˜ o WHEN se verifica e o evento-de-disparo n˜ao e´ executado.

Eventos-de-disparo: UPDATE, INSERT, DELETE.

– especifica que a regra vai ser disparada uma vez por cada linha
(tuplo) afectada pelo evento-de-disparo.

FOR EACH ROW

CREATE TRIGGER nome_trigger
(AFTER|BEFORE) trigger-eventos ON nome-tabela
[FOR EACH ROW]
[WHEN condic
¸˜
ao] trigger-acc ¸˜ ao; <-- PL/SQL trigger-evento = INSERT|DELETE|UPDATE [OF atributos]

40

Exemplos de triggers
Suponha que temos as relac¸o˜ es:
Empregado(Nome, EBI, Salario, Ndep, SuperBI)
Departamento(Dnome, Dnum, TotalSal, DirBI)
TotalSal e´ um atributo derivado e manter o seu valor actualizado pode ser feito atrav´es de um trigger. Os eventos que podem determinar uma alterac¸ a˜ o do valor desse atributo s˜ao:

1. Inserir (um ou mais) novos empregados
R1: CREATE TRIGGER TotalSal1
AFTER INSERT ON Empregado
FOR EACH ROW
WHEN (NEW.Ndep IS NOT NULL)
UPDATE Departamento
SET

Relacionados

  • Plsql
    2620 palavras | 11 páginas
  • Trigger1
    981 palavras | 4 páginas
  • Ciencias
    1242 palavras | 5 páginas
  • Teste
    2379 palavras | 10 páginas
  • Utilizando triggers no SQL Server 2008
    1318 palavras | 6 páginas
  • Triggers No Oracle
    830 palavras | 4 páginas
  • PL SQL
    2034 palavras | 9 páginas
  • Resumo bd
    1566 palavras | 7 páginas
  • Trigger
    1062 palavras | 5 páginas
  • 14
    1881 palavras | 8 páginas