Ir para conteúdo

POWERED BY:

Arquivado

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

Jonatas Cruz

[Resolvido] Trigger multiple rows in singleton select

Recommended Posts

Olá, tenho uma trigger que vai atualizar a tabela vendas no campo totalvendas, toda vez que for adicionado um item_venda. Porém ela está dando esse erro de multiple rows in singleton select.

A trigger é essa

AS
begin
   if (inserting) then
       update vendas
       set valortotal = (SELECT ((p.valor * i.quantidade) + s.valor)
             FROM PECAS P
             INNER JOIN itens_vendas I ON I.id_peca = P.id_peca
             INNER JOIN SERVICOS S ON S.id_servico = I.id_servico)
       WHERE id_venda = new.id_venda;
end

.

Eu vou pegar o valor da peca * quantidade de itens + o valor do servico e armazenar em valortotal de vendas.

Se alguém tiver alguma idéia...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não faltou um SUM ?

 

...
set valortotal = SUM(SELECT ((p.valor * i.quantidade) + s.valor)
...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, eu consegui resolver, não tava nem perto de achar a resposta. haha

Quando eu coloquei o SUN ele até funcionou, só que ele somava os itens de todas as vendas, e adicionava no total.

Falando com o professor de SQL, ele me ajudou a chegar na seguinte resposta.

 

AS
declare variable valorpeca decimal (11,2);
declare variable valorservico decimal (11,2);
begin

       Select s.valor  from servicos s where s.id_servico = new.id_servico into valorpeca ;
       Select p.valor from pecas p where p.id_peca = new.id_peca into valorservico ;
       update vendas
       set valortotal = COALESCE (valortotal,0) + ((:valorpeca * new.quantidade) + :valorservico)
       WHERE id_venda = new.id_venda;

end

De qualquer forma, obrigado.

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.