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.
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
Curtir tópico
+ 0
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;
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.
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;
/
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
Clique aqui para fazer login e interagir na Comunidade :)