Trigger específica em apenas um campo da tabela

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
vindalencio
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 140
Registrado em: Qui, 16 Fev 2006 9:42 am
Localização: Curitiba
Vanderlei Indalencio

Caros amigos estou com uma duvida em como utilizar uma trigger exclusivamente eu um campo da tebela, pois estava com problema de Tabela Multante e acho que resolvei este problema utilizando as dicas do Forum, criando uma trigger de VIEW, utilizando o INSTEAD OF, mas não sei como refernecio a apenas um campo na minha tabela, pois quero que Start a trigger, se houver UPDATING somente quando se atualiza este campo.... :?:
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Pode usar a cláusula WHEN da trigger. Daí você testa se o valor da trigger mudou.

Selecionar tudo

create or replace trigger SUA_TRIGGER
  after update on emp 
  for each row
WHEN (OLD.sal < 8000)   --> Test aqui!
begin
  
    ... SEUS CÓDIGOS...
  
end;
Outra forma, é fazer um IF dentro da trigger e testar dentro da trigger se é o campo que está sendo alterado. Caso não for, dá um RETURN que ele sai fora da trigger.

PS: Tenha um cuidado especial ao verificar se o campo mudou. Dá uma olhada nesse tópico que fala um pouco sobre comparar campos NULL. (por sinal, foi um dos primeiros tópicos aqui do forum :-) )
vindalencio
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 140
Registrado em: Qui, 16 Fev 2006 9:42 am
Localização: Curitiba
Vanderlei Indalencio

Valeu amigo, usei uma comparação com um if dentro da trigger, funciona perfeitamente, mas continuo com problema, pois me parece que na verdade não posso executar literalmente a trigger, pois estou utilizando-a numa View do Applications(APPS), e quando executo-a em outro local, existe um bendito campo do módulo PO do APPS que não é liberado.. Infelizmente não sei o que acontece... Mas mesmo assim valeu as dicas.. :-o
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 13 visitantes