-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTrigers.sql
34 lines (28 loc) · 1.19 KB
/
Trigers.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
DROP TRIGGER if exists apagaDerivadosDoDepartamento;
CREATE TRIGGER apagaDerivadosDoDepartamento
BEFORE DELETE ON Departamento
FOR EACH ROW BEGIN
DELETE FROM Funcionario WHERE (Funcionario.departamento = OLD.departamentoID);
DELETE FROM Modulo WHERE (Modulo.departamento = OLD.departamentoID);
END;
CREATE TRIGGER apagaDerivadosDaEquipa
BEFORE DELETE ON Equipa
FOR EACH ROW BEGIN
DELETE FROM Funcionario WHERE (
Funcionario.funcionarioID = (
SELECT Funcionario FROM FuncionarioEquipa WHERE(FuncionarioEquipa.equipa = OLD.equipaID))
);
DELETE FROM Jogo WHERE (Jogo.equipa = OLD.equipaID);
END;
--
CREATE TRIGGER apagaDerivadosDoFuncionario
BEFORE DELETE ON Funcionario
FOR EACH ROW BEGIN
DELETE FROM FuncionarioEquipa WHERE(FuncionarioEquipa.funcionario = OLD.funcionarioID);
--caso a equipa fique com menos de que 2 funcionários
CASE ((SELECT COUNT(*) FROM FuncionarioEquipa WHERE(FuncionarioEquipa.funcionario = OLD.funcionarioID)) < 2)
DELETE FROM Funcionario WHERE (
Equipa.equipaID = (
SELECT Equipa FROM FuncionarioEquipa WHERE(FuncionarioEquipa.funcionario = OLD.funcionarioID))
);
END;