neo_soro Postado Agosto 10, 2009 Denunciar Share Postado Agosto 10, 2009 salve p.*,to começando a estudar SP e queria que vocês dessem uma analisada no meu código de dessem suas opiniões.Fiz um pequeno sistema de controle financeiro com as seguintes tabelas:- Conta*idconta*idusuario*saldo- Entrada*identrada*idconta*data_entrada*valor- Saida*idsaida*idconta*data_saida*valor- Usuario*idusuario*nome*email*login*senha*salarioDaí toda vez que houver um entrada atualizo as INSIRO um registro na tabela ENTRADA e ATUALIZO o saldo da tabela CONTA atrvés da seguinte SP:DELIMITER $$ DROP PROCEDURE IF EXISTS `confin`.`upSaldo`$$ CREATE PROCEDURE `confin`.`upSaldo` ( IN var_identrada INTEGER, var_idconta INTEGER, var_data_entrada DATE, var_valor DECIMAL(9,2), var_idusuario INTEGER ) BEGIN INSERT INTO entrada (identrada,idconta,data_entrada,valor) VALUES (var_identrada, var_idconta, var_data_entrada, var_valor); UPDATE conta SET saldo = saldo + var_valor WHERE idusuario = var_idusuario; END$$ DELIMITER;Fiz um igual para caso de saída mudando algumas coisas. Tá funcionando, mas dá pra otimizar? Qual a melhor forma de se fazer isso?Desde já agrdeço, Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Agosto 11, 2009 Denunciar Share Postado Agosto 11, 2009 Oi,'neo_soro'Coloque a instrulção abaixo em uma trigger AFTER INSERT da tabela entrada.UPDATE conta SET saldo = saldo + var_valor WHERE idusuario = var_idusuario;Por que você está criando a tabela entrada na SP? Link para o comentário Compartilhar em outros sites More sharing options...
0 neo_soro Postado Agosto 11, 2009 Autor Denunciar Share Postado Agosto 11, 2009 (editado) Obrigado pela dica Denis. Inclusive queria se pudesse saber a diferença entre uma SP e um Trigger? Pelo que eu vi o funcionamento deles é bem parecido. Onde uso um ou outro? Obrigado. Editado Agosto 11, 2009 por neo_soro Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Agosto 11, 2009 Denunciar Share Postado Agosto 11, 2009 Obrigado pela dica Denis. Inclusive queria se pudesse saber a diferença entre uma SP e um Trigger? Pelo que eu vi o funcionamento deles é bem parecido. Onde uso um ou outro? Obrigado.Trigger, não tem parâmetros. É disparado automaticamente a cada atualização da tabela. Neste caso após o insert na tabela "entrada" será disparado, automaticamente, a atualização na tabela "saldo".Ou seja, somente se a gravação da primeira der carto é que a segunda será atualizada.A SP é um programa. é disparado manualmente. Pode conter instruções de atualização ou não. Pode possuir parâmetros de entrada de dados, saida de dados ou de entrada e saida de dados. Não retorna valores.Função. Parecido com SP. Não permite algumas instruções, tais como controle de transação, etc. Aceita parâmetros, tal como uma SP e sempre retorna um valor. Link para o comentário Compartilhar em outros sites More sharing options...
0 neo_soro Postado Agosto 12, 2009 Autor Denunciar Share Postado Agosto 12, 2009 ...Cara muito obrigado pela sua explicação. Bem objetiva. TÓPICO RESOLVIDO Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
neo_soro
salve p.*,
to começando a estudar SP e queria que vocês dessem uma analisada no meu código de dessem suas opiniões.
Fiz um pequeno sistema de controle financeiro com as seguintes tabelas:
- Conta
*idconta
*idusuario
*saldo
- Entrada
*identrada
*idconta
*data_entrada
*valor
- Saida
*idsaida
*idconta
*data_saida
*valor
- Usuario
*idusuario
*nome
*email
*login
*senha
*salario
Daí toda vez que houver um entrada atualizo as INSIRO um registro na tabela ENTRADA e ATUALIZO o saldo da tabela CONTA atrvés da seguinte SP:
Fiz um igual para caso de saída mudando algumas coisas. Tá funcionando, mas dá pra otimizar? Qual a melhor forma de se fazer isso?
Desde já agrdeço,
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados