none
Duvida para Criar um Trigger RRS feed

  • Pergunta

  • Ola Pessoa!

    Sou leigo no assunto e estou precisando de uma ajuda.

    tenho a seguinte situação

    Uma tabela Item venda

    Create Table ItemVenda(
    Iditemvenda integer not null,
    venda_itemvenda integer not null,
    produto_itemvenda integer not null,
    qtde numeric(15,2)  not null,
    valorunitario numeric(15,2) not null,
    valordesconto numeric(15,2) not null,
    valortotal numeric(15,2) not null,
    primary key (Iditemvenda)
    );

    Preciso criar uma trigger: Trigger atualiza_valor_venda: Após a inclusão, alteração ou exclusão de um item de venda a trigger deve somar os valores totais de todos os itens da venda que ela pertence e atualizar o campo valortotal da tabela de venda.

    Agradeço se pode me ajudar.

    sexta-feira, 22 de novembro de 2013 14:47

Respostas

Todas as Respostas

  • Deleted
    • Marcado como Resposta Estefanio Gomes sexta-feira, 22 de novembro de 2013 18:37
    sexta-feira, 22 de novembro de 2013 16:08
  • Sim, é a essa coluna mesmo que me refiro, a coluna valortotal da tabela ItemVenda.

    sexta-feira, 22 de novembro de 2013 16:31
  • tipo assim?

    Create Table ItemVenda(
    Iditemvenda integer not null,
    venda_itemvenda integer not null,
    produto_itemvenda integer not null,
    qtde numeric(15,2)  not null,
    valorunitario numeric(15,2) not null,
    valordesconto numeric(15,2) not null,
    valortotal numeric(15,2) not null,
    primary key (Iditemvenda)
    );

    Create Trigger atualiza_valor_venda
    On ItemVenda
    After Insert, Update, Delete
    as
    Update ItemVenda 
    set valortotal = ((qtde * valorunitario) - valordesconto);


    sexta-feira, 22 de novembro de 2013 18:04
  • Estefanio,

    só acho que no create table a coluna de VALORTOTAL deve ser NULL

    e no create trigger , vc nao precisa colocar o delete


    "Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta."

    Érica Tohoma | http://bloggirlsa.wordpress.com

    • Marcado como Resposta Estefanio Gomes sexta-feira, 22 de novembro de 2013 18:38
    sexta-feira, 22 de novembro de 2013 18:26
  • Deleted
    • Marcado como Resposta Estefanio Gomes segunda-feira, 25 de novembro de 2013 12:20
    sexta-feira, 22 de novembro de 2013 20:00
  • Oi José

    Então, é uma questão acadêmica, e o professor quer que faça uma trigger.

    segunda-feira, 25 de novembro de 2013 12:22
  • Deleted
    • Marcado como Resposta Estefanio Gomes terça-feira, 26 de novembro de 2013 14:16
    segunda-feira, 25 de novembro de 2013 18:13
  • Olá José, Obrigado pela atenção.

    Realmente existem duas tabelas

    ItemVenda (Iditemvenda, Idproduto, qtde, valorunitario, valordesconto, valortotal)

    venda ( idvenda, valortotal... )

    Para a tabela "ItemVenda" tenho que criar uma procedure.

    • Procedure inc_item_venda. Insere o item de venda no banco de dados, calculando valor total do item baseado em seu preço unitário, quantidade e desconto. A procedure deve calcular o valor do desconto conforme o tipo informado como parâmetro (porcentagem ou valor). 

    Parâmetros:

    • Código venda: código da venda que o item faz parte.
    • Código produto: código do produto.
    • Quantidade: quantidade do produto a ser vendido.
    • Valor Unitário: preço de venda do produto.
    • Tipo do desconto: “p” para porcentagem ou “v” para valor
    • Valor do desconto: zero para nenhum desconto ou valor.

    Depois disso ae sim criar a trigger.

    • Trigger atualiza_valor_venda: Após a inclusão, alteração ou exclusão de um item de venda a trigger deve somar os valores totais de todos os itens da venda que ela pertence e atualizar o campo valortotal da tabela de venda.

    Obrigado!

    terça-feira, 26 de novembro de 2013 14:36
  • Olá Efefanio, vc conseguiu resolver esse problema da trigger?
    Fez as procedures também?
    Já estou mais de 5 horas pesquisando e não consigo fazer :(
    quarta-feira, 27 de novembro de 2013 15:53
  • Olá Ed, infelizmente não consegui ainda.
    quarta-feira, 27 de novembro de 2013 16:18
  • Deleted
    quarta-feira, 27 de novembro de 2013 22:24