Mais seguro que a Stored Procedure é a Trigger.
Supondo um controle de estoques simples:
Tabela:
Movimento do estoque:
Id_produto, flag_entrada_saida, id_local, quantidade, saldo, data hora do movimento
Tabela saldos em estoque:
Id_local, Id_produto, data_ultimo_movimento, saldo
Uma trigger before insert em Movimento do estoque:
Busca o saldo do produto parao local movimentado.
Conforme flag_entrada_saida, recalcula saldo, para + ou para -.
Atualiza a coluna saldo em Movimento do Estoque.
Atualiza tabela Saldos em Estoque com a data e hora corrente e o novo saldo para o local e produto movimentado.
A segurança é muito maior e os dados muito mais confiáveis.
Eu usaria Engine na tabela movimento do tipo Archive. (Não pode excluir, não pode alterar, somente inserir).
A única preocupação é inserir na tabela movimento do estoque informando o id do produto, o id do local, se é uma entrada ou saida e a quantidade ( a data/hora usa-se current_time_stamp).
É claro que uma gestão inteligente de estoque envolvem muitos outros processos não descritos acima pois o exemplo é uma simplória sugestão para demonstrar as vantagens de usar trigger.