DUAS ULTIMAS ESTÃO ERRADAS:
CREATE OR REPLACE TRIGGER TG_TAB_PROJETO
AFTER INSERT OR UPDATE OR DELETE ON **TG_TAB_PROJETO**
BEGIN
DELETE FROM TAB_FUNCIONARIO_ORCAMENTO;
INSERT INTO TAB_FUNCIONARIO_ORCAMENTO
SELECT TD.NOME_DEPARTAMENTO AS DEPARTAMENTO, ROUND(TP.SOMA/COUNT(*),2) AS TOTAL
FROM
TAB_DEPARTAMENTO TD
INNER JOIN
TAB_FUNCIONARIO TF
ON TD.COD_DEPARTAMENTO = TF.COD_DEPARTAMENTO
INNER JOIN
(SELECT P.COD_DEPARTAMENTO, SUM(P.ORCAMENTO) AS SOMA
FROM TAB_PROJETO P
GROUP BY P.COD_DEPARTAMENTO) TP
ON TD.COD_DEPARTAMENTO = TP.COD_DEPARTAMENTO
GROUP BY TD.NOME_DEPARTAMENTO, TP.SOMA;
END;
E
CREATE OR REPLACE TRIGGER TG_TAB_DEPARTAMENTO
AFTER INSERT OR UPDATE OR DELETE ON **TG_TAB_DEPARTAMENTO**
BEGIN
DELETE FROM TAB_FUNCIONARIO_ORCAMENTO;
INSERT INTO TAB_FUNCIONARIO_ORCAMENTO
SELECT TD.NOME_DEPARTAMENTO AS DEPARTAMENTO, ROUND(TP.SOMA/COUNT(*),2) AS TOTAL
FROM
TAB_DEPARTAMENTO TD
INNER JOIN
TAB_FUNCIONARIO TF
ON TD.COD_DEPARTAMENTO = TF.COD_DEPARTAMENTO
INNER JOIN
(SELECT P.COD_DEPARTAMENTO, SUM(P.ORCAMENTO) AS SOMA
FROM TAB_PROJETO P
GROUP BY P.COD_DEPARTAMENTO) TP
ON TD.COD_DEPARTAMENTO = TP.COD_DEPARTAMENTO
GROUP BY TD.NOME_DEPARTAMENTO, TP.SOMA;
END;
O CORRETO SERIA :
CREATE OR REPLACE TRIGGER TG_TAB_PROJETO
AFTER INSERT OR UPDATE OR DELETE ON **TAB_FUNCIONARIO**
BEGIN
DELETE FROM TAB_FUNCIONARIO_ORCAMENTO;
INSERT INTO TAB_FUNCIONARIO_ORCAMENTO
SELECT TD.NOME_DEPARTAMENTO AS DEPARTAMENTO, ROUND(TP.SOMA/COUNT(*),2) AS TOTAL
FROM
TAB_DEPARTAMENTO TD
INNER JOIN
TAB_FUNCIONARIO TF
ON TD.COD_DEPARTAMENTO = TF.COD_DEPARTAMENTO
INNER JOIN
(SELECT P.COD_DEPARTAMENTO, SUM(P.ORCAMENTO) AS SOMA
FROM TAB_PROJETO P
GROUP BY P.COD_DEPARTAMENTO) TP
ON TD.COD_DEPARTAMENTO = TP.COD_DEPARTAMENTO
GROUP BY TD.NOME_DEPARTAMENTO, TP.SOMA;
END;
CREATE OR REPLACE TRIGGER TG_TAB_DEPARTAMENTO
AFTER INSERT OR UPDATE OR DELETE ON **TAB_FUNCIONARIO**
BEGIN
DELETE FROM TAB_FUNCIONARIO_ORCAMENTO;
INSERT INTO TAB_FUNCIONARIO_ORCAMENTO
SELECT TD.NOME_DEPARTAMENTO AS DEPARTAMENTO, ROUND(TP.SOMA/COUNT(*),2) AS TOTAL
FROM
TAB_DEPARTAMENTO TD
INNER JOIN
TAB_FUNCIONARIO TF
ON TD.COD_DEPARTAMENTO = TF.COD_DEPARTAMENTO
INNER JOIN
(SELECT P.COD_DEPARTAMENTO, SUM(P.ORCAMENTO) AS SOMA
FROM TAB_PROJETO P
GROUP BY P.COD_DEPARTAMENTO) TP
ON TD.COD_DEPARTAMENTO = TP.COD_DEPARTAMENTO
GROUP BY TD.NOME_DEPARTAMENTO, TP.SOMA;
END;