Tenho uma tabela de empregados no postgresql com algumas informaçoes de empregados. Preciso fazer uma TRIGGER para quando DELETAR um empregado, NAO DELETAR quem é MANAGER e quem é UNICO empregado de um MANAGER.
Um MANAGER tem seu empno referenciado no campo mgr da tabela emp.
Entao, como fazer esta trigger? Fiz uma versao mas nao esta funcionando
caso sim, tem uma anotação chamada audit se não me engano, ela faz todo esse trabalho para você.
V
veronicaveronica
POxa nao trabalho com Hibernate nao…
Tem uma dica para como fazer essa trigger?
Obrigada
A
AbelBueno
Eu não consegui entender direito o que você precisa.
Pelo que vi nessa tabela emp, o mgr aponta um outro empno , que é o gerente daquele funcionário.
Quando você tenta apagar um funcionário que não é gerente, o que deve acontecer?
Quando você tenta apagar um gerente, o que deve acontecer?
V
veronicaveronica
OLa e obrigada por ajudar,
Quando você tenta apagar um funcionário que não é gerente e que nao é o UNICO funcionario de um gerente PODE APAGAR.
Quando você tenta apagar um gerente, aparece uma mensagem dizendo ser impossivel APAGAR
Quando tentar apagar funcionario unico de um gerente, aparece uma mensagem dizendo ser impossivel APAGAR…
Se quiser me add no skype veronica_medeiros
OBRIGADA
A
AbelBueno
Acho que entendi. Imagino que deva acrescentar essas condições na sua trigger:
SELECTcount(*) FROM emp INTO meus_subordinados WHERE mgr = OLD.empno; SELECT count(*)FROMempINTOsubordinados_meu_gerenteWHEREmgr=OLD.mgr;IFmeus_subordinados>0ORsubordinados_meu_gerente=1THENRAISENOTICE'sua mensagem'ENDIF
Não conheço bem a sintaxe de plpgsql, mas imagino que a idéia seja essa.
V
veronicaveronica
Obrigada, vou testar isso aqui agora no meu banco de dados e jah volto para dizer se funcionou…
OBRIGADA
V
veronicaveronica
OLa…
A funçao funcionou bem legal, OBRIGADA…
Mas ainda nao estou conseguindo DELETAR um registro.
Devo colocar uma clausula DELETE dentro da funçao para deletar o registro, correto?
Obrigada,
Veronica
A
AbelBueno
veronicaveronica:
Devo colocar uma clausula DELETE dentro da funçao para deletar o registro, correto?
Não, não precisa.
A trigger só é executada quando você executar uma operação de Delete.
Se você quiser apagar, basta não fazer nada.
Para impedir que o registro seja apagado, aí sim você tem que gerar o erro para impedir.