Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Primeira Stored Procedure


neo_soro

Pergunta

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:

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

4 respostass a esta questão

Posts Recomendados

  • 0

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

  • 0

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 por neo_soro
Link para o comentário
Compartilhar em outros sites

  • 0
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

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...