Duvida Criação Trigger

27/06/2010

0

Estou com uma dúvida na criação da trigger abaixo:


create or replace trigger Ajusta_estoque_2
before update  of qtd ON teste1
for each row
begin

update teste2 set qtd = qtd - qtd
where idProduto = idproduto;

end;


Ao compilar funciona legal, mas ao incluir o registro na table teste2 nao debita o estoque do produto na tabela teste1.
Fabricio Jacob

Fabricio Jacob

Responder

Posts

25/08/2010

Bruno Batista

Bom dia,

tenta fazer algo assim.

create or replace trigger Ajusta_estoque_2
before update  of qtd ON teste1
for each row
begin

update teste2 set qtd = qtd - :new.qtd (Nome do campo contido na tabela Teste1 e que referencia a quantidade)
where idProduto = :new.idproduto (Nome do campo contido na tabela Teste1 e que rereferencia ao código);

end;

Estou com uma dúvida na criação da trigger abaixo:


create or replace trigger Ajusta_estoque_2
before update  of qtd ON teste1
for each row
begin

update teste2 set qtd = qtd - qtd
where idProduto = idproduto;

end;


Ao compilar funciona legal, mas ao incluir o registro na table teste2 nao debita o estoque do produto na tabela teste1.
Responder

25/08/2010

Deivison Melo

Exemplo simples de trigger em oracle seria:   create or replace trigger nome_schema.trg_tabela_tal
before insert or update
of cd_setor
on nome_schema.tabela_tal
referencing new as new old as old
for each row declare
  Cursor cCursorTal is
   Select tabela
     From nome_schema.tabela_tal4, nome_schema.tabela_tal3
    Where tabela_tal4.cd_tabela_tal4 = (Select cd_tabela_tal4
                                          From nome_schema.tabela_tal2
                                         Where cd_tabela_tal2 = nvl(:new.cd_tabela_tal2, :old.cd_tabela_tal2)
   and tabela_tal2.cd_multi_empresa = 1)
     and tabela_tal4.cd_tabela_tal4 = tabela_tal3.cd_tabela_tal4
     and tabela_tal3.cd_multi_empresa = 1;
  vtabela varchar2(1):=null;
Begin
  if Updating and nvl(:old.sn_repassado, 'T') <> nvl(:new.sn_repassado, 'T') then
    return;
  end if;
  Open cCursorTal;
  Fetch cCursorTal into vtabela;
  Close cCursorTal;
  If vtabela not in ('P','C') then
    return;
  End if;
  if :NEW.tp_mvto = 'FATURADO' and :NEW.cd_setor_produziu is null then
     :NEW.cd_setor_produziu := :NEW.cd_setor ;
  end If;
End;
/
 
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar