Com base no diagrama ER 1 (imagem em anexo), crie uma trigger que ao apagar um vale, a trigger deva alterar o número de vales emitido, abertos , descontados e o valor de vales em aberto dos funcionários de acordo como status do vale.
Se o status for 1 deverá:
Diminuir o número de vales emitidos
Diminuir o número de vales abertos Diminuir o valor total de vales em aberto
Se o status for 2 deverá
Diminuir o número de vales emitidos
Diminuir o número de vales descontados
Eu fiz o seguinte código:
CREATE OR REPLACE TRIGGER deletarvale
BEFORE DELETE ON tbvale
FOR EACH ROW
BEGIN
IF OLD.status = '1' THEN
UPDATE tbfuncionario
SET numvalesemitidos = numvalesemitidos - 1,
numvalesaberto = numvalesaberto -1,
valortotalvalesaberto = valortotalvalesaberto - OLD.valorvale
WHERE OLD.fkcodmat = pkcodmat;
END IF;
IF OLD.status = '2' THEN
UPDATE tbfuncionario
SET numvalesemitidos = numvalesemitidos - 1,
numvalesdescontados = numvalesdescontados -1
WHERE OLD.fkcodmat = pkcodmat;
END IF;
END;
Erro(2,1): PL/SQL: Statement ignored
Erro(2,4): PLS-00201: o identificador 'OLD.STATUS' deve ser declarado
Erro(9,1): PL/SQL: Statement ignored
Erro(9,4): PLS-00201: o identificador 'OLD.STATUS' deve ser declarado