Atualizar campo quando comparado com sysdate

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
israelpa
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 1
Registrado em: Sex, 06 Out 2006 7:52 pm
Localização: Belém

Caros colegas do fórum, antes de tudo quero esclarecer que estou engatinhando no oracle e estou com o seguinte problema: tenho em uma das minhas tabelas um campos que determina uma data de vencimento. Todas as vezes que essa data for menor que a data atual é preciso modificar o status do produto. Criei o seguinte trigger:

Selecionar tudo

  1 CREATE OR REPLACE TRIGGER modifica_status
  2    (Minha dúvida, o que colocar aqui para disparar o trigger)
  3  BEGIN
  4    IF  (fim < (sysdate - 1)) AND status = 1 THEN
  5       update apolices  set status = '3'
  6    END IF;
  7  END modifica_status; 
Obrigado!
diegolenhardt
Moderador
Moderador
Mensagens: 1177
Registrado em: Qui, 15 Out 2009 10:28 am
Localização: Recife

http://glufke.net/oracle/viewtopic.php? ... ce+trigger

é bom sempre fazer uma busca no fórum, esse tipo de coisa sempre tem no fórum...
dudu0566
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 74
Registrado em: Seg, 06 Ago 2007 3:59 pm
Localização: Campinas - SP
Eduardo Gomes

Vai depender de como vai comportar sua trigger.
Ela vai ser disparanda antes ou depois de efetuar a(s ) ação(ões)? (before/after)
Em quais ações ela vai ser disparada? (insert or update or delete)
Tem outras possibilidades também, veja em http://glufke.net/oracle/viewtopic.php?t=2052.

Se tratando de data, nas comparações use o trunc (ignora a hora, a não ser que interfira na sua lógica).

Selecionar tudo

create or replace trigger trg_sua_trigger
  before insert or update on tb_sua_tabela
  for each row
begin
  if (trunc(:new.data_vencimento) <= trunc(sysdate)) and (:new.status = 1) then
    :new.status := 3;
  end if;
end;
Boa sorte,

abraços,
burga
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Qui, 26 Nov 2009 1:05 pm
Localização: SP
Ricardo H. Tajiri

Ainda assim, se você quer atualizar o campo pra todas as datas já gravadas na sua tabela, não é o caso de você usar uma trigger e sim um procedimento que rode a cada determinado intervalo de tempo.
Responder
  • Informação
  • Quem está online

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