Fórum CRIAR TRIGGER QUE ATUALIZE TABELA #458317

11/10/2013

0

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

Responder

Posts

21/10/2013

Kaio

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
Responder

Gostei + 0

21/10/2013

Deivison Melo

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!!
Responder

Gostei + 0

30/10/2013

Deivison Melo

Problema resolvido, posso encerrar o tópico?

Abração e bons códigos!!
Responder

Gostei + 0

31/10/2013

Deivison Melo

Estou encerrando tópico!
Responder

Gostei + 0

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

Aceitar