Como criar Trigger para sequencia

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
mariogus
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 157
Registrado em: Sex, 30 Nov 2007 1:17 pm
Localização: Porto Alegre - RS

Pessoal,

Preciso criar uma trigger que ao inserir em uma determinada tabela crie uma sequência definida a partir de 4001 - inserindo no atributo código de cliente ...
victorhugomuniz
Moderador
Moderador
Mensagens: 1396
Registrado em: Sex, 01 Fev 2008 2:06 pm
Localização: Rio de Janeiro - RJ
Contato:
:D

Selecionar tudo

-- Create sequence 
create sequence NOME_SEQ
minvalue 1
maxvalue 999999999999999999999999999
start with 4001
increment by 1
cache 20;

--Trigger
create or replace trigger TRG_NOME
  before insert on NOME_TABELA
  for each row
declare
  -- local variables here
begin

  SELECT NOME_SEQ.nextval
  INTO :new.ID
  FROM dual;

end TRG_NOME;
diegolenhardt
Moderador
Moderador
Mensagens: 1177
Registrado em: Qui, 15 Out 2009 10:28 am
Localização: Recife

Selecionar tudo

create sequence SEQUENCIAL
minvalue 1
maxvalue 9999999999
start with 4001
increment by 1;

Selecionar tudo

create or replace trigger SUATRIGGER after insert on TABELA for each row
declare
  vSeq number;
begin
  
  select SEQUENCIAL.nextval
     into vSeq
     from dual;

  :new.seu_campo := vSeq;

end SUATRIGGER;
mariogus
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 157
Registrado em: Sex, 30 Nov 2007 1:17 pm
Localização: Porto Alegre - RS

Pois é agora tenho outro problema que é atualizar todos os campos que estão em branco dessa tabela com essa sequência.Como posso fazer isso?
diegolenhardt
Moderador
Moderador
Mensagens: 1177
Registrado em: Qui, 15 Out 2009 10:28 am
Localização: Recife

Muda sua trigger para after insert or update, (temporariamente),

depois faça,

update tabela set qualquercampo = qualquercampo;

A idéia é, forçar a trigger a disparar para que ela preencha, manjou?

outra solução seria fazer um loop na tabela e então chamar o sequencial e dar o update,

a solucao da trigger é mais rapido/facil, meio gambi, mas rola...

:D

qualquer coisa posta aí...
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Google Adsense [Bot] e 4 visitantes