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;
Atualizar campo quando comparado com sysdate
-
- 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:
Obrigado!
-
- 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...
é bom sempre fazer uma busca no fórum, esse tipo de coisa sempre tem no fórum...
-
- 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).
Boa sorte,
abraços,
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).
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;
abraços,
-
- 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.
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Google [Bot] e 1 visitante