ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

A subconsulta retornou mais de 1 valor. Isso não é permitido

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
jescudeiro
Aprendiz
Aprendiz


Registrado: Segunda-Feira, 2 de Abril de 2012
Mensagens: 261
Localização: ribeirao preto

MensagemEnviada: Ter Jul 31, 2012 9:44 pm    Assunto: A subconsulta retornou mais de 1 valor. Isso não é permitido Responder com Citação

boa noite amigos,
tenho uma tabela movimento e movimento_itens. tenho duas triggers uma q baixa do saldo de produtos qdo insiro um item na tabela movimento_itens e outra que delete da mesma.
Qdo vou usar a trigger para deletar varios itens ao mesmo tempo do movimento_itens da o erro acima.
segue codigo, muito obrigado

Create Trigger T_AtualizarSaldosProdutosGod

On

[Movimento_Itens]

For

Delete

As


Set NoCount On


Declare @Condicao Char(1)

Set @Condicao=(Select es From Deleted)

If @Condicao='E'

Begin

Update Produtos

Set Estoque_Atual = (S.Estoque_Atual - I.Qdade)

from Produtos S Inner Join Deleted I

On S.CodigoInterno = I.CodProduto

End

If @Condicao='S'

Begin

Update Produtos

Set Estoque_Atual = (S.Estoque_Atual + I.Qdade)

from Produtos S Inner Join Deleted I

On S.CodigoInterno = I.CodProduto

End
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Ter Jul 31, 2012 10:03 pm    Assunto: Responder com Citação

Boa noite,

Desconfio que este erro está ocorrendo pela forma como funciona a trigger no SQL Server, conforme foi dito no tópico abaixo:
http://www.activedelphi.com.br/forum/viewtopic.php?p=367530&sid=79af0ce51317746ce43f46f37e701e38

Experimente remover todo o código em que a variável @Condicao está envolvida, para depois substituir os 2 updates por apenas um conforme segue abaixo:

Código:
Update Produtos
Set Estoque_Atual = Estoque_Atual + (case when I.es = 'E' then I.Qdade * -1 else I.Qdade end)
from Produtos S
Inner Join Deleted I On S.CodigoInterno = I.CodProduto


Espero que ajude.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB