Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Brasiliense

Trigger para atualizar tabela

Recommended Posts

Colegas, bom dia.

Preciso implementar um trigger para atualizar uma tabela "Consolidado" quando ocorrerem inclusões/alterações/exclusões na tabela "Vendas".

 

Tabela "Vendas" --> (codcli, codpro, qtd)

 

TAbela "Consolidado" --> (codpro, qtdtotal)

 

Quando se inserir um novo registro de vendas, deve-se inserir um novo registro na tabela "Consolidado" ou atualizar a coluna "qtdtotal" do registro do produto vendido, se já houver.

 

Quando se excluir um registro de vendas, deve-se diminuir o valor contido no campo "qtdtotal" referente ao produto em questão da tabela "Consolidado".

 

Quando se alterar o campo "qtd" em algum registro de vendas, deve-se atualizar o campo qtdtotal (para mais ou para menos, a depender do caso) referente ao produto em questão da tabela "Consolidado".

 

Algúem pode ajudar a implementar esse trigger?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sua trigger deve ser na tabela "Vendas"

Momento: After

Transações: Insert,Update,Delete

Algoritmo:

Se for Insert (INSERTING)

Atualizar tabela "Consolidado", somando a quantidade.

Se não realizou nenhum update (pesquise pela clausula SQL%NOTFOUND), inserir na tabela "Consolidado"

Se for Update (UPDATINGO)

Se :NEW.QTDE maior que :OLD.QTDE

Atualizar tabela "Consolidado", somando a quantidade

Caso Contrário

Atualizar tabela "Consolidado", diminuindo a quantidade

Se for Delete (DELETING)

Atualizar tabela "Consolidado", diminuindo a quantidade

 

 

Este é apenas um esboço inicial para você conseguir iniciar seu trabalho.

 

Espero ter ajudado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Atenção para o caso de update em que ocorra uma troca de produto, deve-se abater o saldo de um e acrescentar o do outro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sua trigger deve ser na tabela "Vendas"

Momento: After

Transações: Insert,Update,Delete

Algoritmo:

Se for Insert (INSERTING)

Atualizar tabela "Consolidado", somando a quantidade.

Se não realizou nenhum update (pesquise pela clausula SQL%NOTFOUND), inserir na tabela "Consolidado"

Se for Update (UPDATINGO)

Se :NEW.QTDE maior que :OLD.QTDE

Atualizar tabela "Consolidado", somando a quantidade

Caso Contrário

Atualizar tabela "Consolidado", diminuindo a quantidade

Se for Delete (DELETING)

Atualizar tabela "Consolidado", diminuindo a quantidade

 

 

Este é apenas um esboço inicial para você conseguir iniciar seu trabalho.

 

Espero ter ajudado.

 

Como faço para utilizar a cláusula SQL%NOTFOUND? Está dando erro de compilação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Sua trigger deve ser na tabela "Vendas"

Momento: After

Transações: Insert,Update,Delete

Algoritmo:

Se for Insert (INSERTING)

Atualizar tabela "Consolidado", somando a quantidade.

Se não realizou nenhum update (pesquise pela clausula SQL%NOTFOUND), inserir na tabela "Consolidado"

Se for Update (UPDATINGO)

Se :NEW.QTDE maior que :OLD.QTDE

Atualizar tabela "Consolidado", somando a quantidade

Caso Contrário

Atualizar tabela "Consolidado", diminuindo a quantidade

Se for Delete (DELETING)

Atualizar tabela "Consolidado", diminuindo a quantidade

 

 

Este é apenas um esboço inicial para você conseguir iniciar seu trabalho.

 

Espero ter ajudado.

 

Como faço para utilizar a cláusula SQL%NOTFOUND? Está dando erro de compilação.

 

 

Segue abaixo colega:

 

BEGIN

SELECT COD_EMPRESA

INTO V_EMPRESA

FROM EMPRESA

WHERE COD_EMPRESA = P_PARAMENTRO

EXCEPTION

WHEN NO_DATA_FOUND THEN

V_EMPRESA := NULL;

END;

 

 

Espero que este exemplo possa te ajudar em alguma coisa.

Até mais!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.