[firebase-br] Duplicidade de registros
José Fernando Lima
jflima.programador em gmail.com
Qua Set 11 09:40:37 -03 2013
Bom dia Guto,
1º - Verifique como está criada sua chave primária para a tabela de
estoque, pois essa chave não deveria permitir a inclusão de um produto com
o mesmo ID para a mesma empresa.
2º - Certifique-se que esse código está na trigger After Insert da tabela
de produtos.
3º - Se estiver usando o firebird 2.1 ou superior, tente usar o seguinte
update or insert para a tabela de estoque no seu código:
UPDATE OR INSERT INTO ESTOQUE(IDEMPRESA, IDPRODUTO, QUANTIDADE) VALUES (1,
NEW.ID, 0)
MATCHING(IDEMPRESA, IDPRODUTO)
Assim se já existir ao invés de inserir ele apenas atualiza a quantidade,
porém se sua chave estiver como o item 1 que mencionei, já deveria ter dado
um erro de chave na inclusão e nem passado por esse código.
E como o Felix disse, certifique-se também de ter um código para excluir da
tabela de estoque quando o produto for excluído, evitando assim que fique
lixo no banco.
José Fernando
Em 10 de setembro de 2013 20:11, Guto & Michellane Araújo <
gutogleberty em gmail.com> escreveu:
> Boa noite a todos, seguinte estou com o problema abaixo que não consegui
> endentificar:
>
> na tabela produtos depois de enserir um registro tenho a seguinte rotina:
>
> AS
> begin
> if (new.ID is not null) then
> begin
> insert into estoque (IDEMPRESA, IDPRODUTO, QUANTIDADE) values
> (1, new.id, 0);
> end
> end
>
>
> o problema é que as vezes é enserido o registro 2 ou mais vezes na tabela
> estoque
>
> ex: cadastrei na tabela produtos o registro 20
> ao gravar e conferir na tabela estoque esta assim:
>
> IDEMPRESA,1 IDPRODUTO,20 QUANTIDADE,0
> IDEMPRESA,1 IDPRODUTO,20 QUANTIDADE,0
>
> esta duplicado. mais as vezes fica correto só 1 registro.
>
> desde já agradeço se alguem souber onde esta o problema.
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
Mais detalhes sobre a lista de discussão lista