[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