CRIAR TRIGGER QUE ATUALIZE TABELA

Oracle

11/10/2013

PRECISO DE AJUDA PARA FINALIZAR A TRIGGER ABAIXO.
PRECISO CRIAR UMA TRIGGER QUE ATUALIZE A TABELA ESTOQUE TODA VEZ QUE FOR DADO UM INSERT, DELETE OU UPDATE NA TABELA PRODUTOS.
FIZ COMO MOSTRA ABAIXO MAIS ESTA APRESENTANDO ERRO.
ALGUÉM PODE ME AJUDAR OU ME MOSTRAR UM JEITO MAIS FÁCIL DE FAZER??


CREATE TRIGGER ATUALIZA_PRODUTO_ESTOQUE ON PRODUTO
AFTER INSERT
AS
INSERT INTO ESTOQUE
SELECT COD_ESTOQUE, COD_PRODUTO, NOME_PRODUTO, QTDE_ESTOQUE,VALOR_UNITARIO FROM INSERTED

GO
insert into PRODUTO (COD_PRODUTO, STATUS, ESTOQUE_MINIMO, ESTOQUE_MAXIMO, QTDE);
values (8, 'teste', 'A', 1, 250);
update into PRODUTO (COD_PRODUTO, STATUS, ESTOQUE_MINIMO, ESTOQUE_MAXIMO, QTDE)
values (8, 'teste', 'I', 1, 150);
delete into PRODUTO (COD_PRODUTO, STATUS, ESTOQUE_MINIMO, ESTOQUE_MAXIMO, QTDE)
values (8, 'teste', 'I', 1, 150);

Francielle Oliveira

Francielle Oliveira

Curtidas 0

Respostas

Kaio

Kaio

11/10/2013

PODES FAZER ASSIM

CREATE OR REPLACE TRIGGER NOME_TRIGGER

BEFORE INSERT OF NOME_CAMPO ON TABELA_1

BEGIN
IF UPDATING THEN
insert into TABELA2 (Campo1, Campo2)
values (new.CampoA, new.CampoB);
END IF;
END NOME_TRIGGER;


onde

Campo1 e Campo2 são campos da TABELA2
CampoA e CampoB são campos da TABELA1
GOSTEI 0
Deivison Melo

Deivison Melo

11/10/2013

Seria algo do tipo:

CREATE OR REPLACE TRIGGER ATUALIZA_PRODUTO_ESTOQUE
AFTER  INSERT ON sua_tabela
REFERENCING
 NEW AS NEW
 OLD AS OLD
FOR EACH ROW -- aqui digo se é linha à linha
BEGIN
  insert into PRODUTO (COD_PRODUTO, STATUS, ESTOQUE_MINIMO, ESTOQUE_MAXIMO, QTDE);
              values  (:NEW.COD_PRODUTO, :NEW.STATUS, :NEW.ESTOQUE_MINIMO, :NEW.ESTOQUE_MAXIMO, :NEW.QTDE);
END;


Qualquer dúvida estou à disposição

Abração e bons códigos!!
GOSTEI 0
Deivison Melo

Deivison Melo

11/10/2013

Problema resolvido, posso encerrar o tópico?

Abração e bons códigos!!
GOSTEI 0
Deivison Melo

Deivison Melo

11/10/2013

Estou encerrando tópico!
GOSTEI 0
POSTAR