Boa tarde! Não sei dizer ao certo aonde está o erro porem eu estava tentando implementar o RAISE NOTICE mas não consigo fazer com que a noticia apareça no terminal do PostgreSQL.
Estou usando o CREATE da seguinte forma:
CREATE OR REPLACE FUNCTION funcionarios.cria_instrutor () RETURNS TRIGGER AS $$
DECLARE
media_salarial DECIMAL;
instrutores_recebem_menos INTEGER DEFAULT 0;
total_instrutores INTEGER DEFAULT 0;
salario DECIMAL;
percentual DECIMAL (5, 2);
BEGIN
SELECT AVG(funcionarios.instrutor.salario) INTO media_salarial FROM instrutor WHERE id <> NEW.id;
IF NEW.salario > media_salarial THEN
INSERT INTO log_instrutores (informacao) VALUES (NEW.nome || 'recebe acima da média.');
END IF;
FOR salario IN SELECT funcionarios.instrutor.salario FROM instrutor WHERE id <> NEW.id LOOP
total_instrutores := total_instrutores + 1;
IF NEW.salario > salario THEN
instrutores_recebem_menos = instrutores_recebem_menos + 1;
END IF;
END LOOP;
percentual = instrutores_recebem_menos::DECIMAL / total_instrutores::DECIMAL * 100;
INSERT INTO funcionarios.log_instrutores (informacao, teste)
VALUES (NEW.nome || ' recebem mais do que ' || percentual || '% da grade de instrutores', '');
RETURN NEW;
EXCEPTION
WHEN undefined_column THEN
RAISE NOTICE 'mensagem de teste';
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
Acredito que algo relacionado ao schema que esteja gerando esse conflito já que usei também o mesmo script do material (adaptando para usar com o schema) e tive o mesmo resultado que é uma mensagem de executado com sucesso "INSERT 0 1
Query returned successfully in 65 msec."