Emidio, quando eu fiz um curso de Java, o instrutor falou que não devemos
deixar que o banco acuse o erro, ou seja, deixar dar erro de integridade
referencial, chave duplicada, essas coisas.
Ele disse que para o banco isso é muito oneroso, gasta muito recurso,
podendo deixar a aplicação lenta, lógico que levando em conta um sistema com
muito acesso.

Ele falou que é melhor executarmos alguns selects pra tentar tratar o
problema antes da inserção ou deleção.
De acordo com ele, o uso de selects não onera tanto o banco de dados quanto
uma interrupção.
e ele ainda disse que, select count(*), pode usar a vontade.

eu nunca consegui testar isso, mas vale a dica (eu acho :) )

espero ter ajudado em alguma coisa.



2009/2/13 Emidio Leite <[email protected]>

> Olá a todos, será que alguém saberia informar como poderia fazer um
> tratamento dos erros gerados pelo banco de dados no CI, por exemplo:
>
> Quando tentamos inserir um registro com uma chave duplicada, o banco de
> dados (no meu caso MySQL) retorna um erro e o CI captura esse erro
> retornando uma mensagem formatada. O mesmo ocorre quando usamos integridade
> referencial, ao tentar remover um registro marcado como restrict em seu
> relacionamento, o banco de dados retorna um erro e o CI captura o erro e
> exibe a mensagem pra gente.
>
> Existe alguma forma de capturar tal erro gerado pelo banco de dados, com o
> objetivo de manipula-lo, para posterior exibição da informação ao usuario?
> ou seja, algo como: se ao tentar cadastrar um registro com a chave primária
> já existente exibir ao usuario que a chave já está cadastrada.
>
> Na tentativa de solucionar o problema, fiz algo do tipo no meu MODEL:
>
> function excluir ($codigo){
>         $this->db->where('codigo_mar', $codigo);
>         $this->db->delete('marca_equipamento');
>         return $this->db->_error_number();
> }
>
> e desativei a mensagem padrão do CI, mudando $db['default']['db_debug']
> para  FALSE:
>
> $db['default']['db_debug'] = FALSE;
>
> no meu controlador eu avalio o código do erro retornado:
>
> -se o erro retornado é 0(zero), tudo ocorreu bem.
> -senão verifico o código do erro e exibo a mensagem para cada erro
> específico.
>
>  $retorno = $this->marca_equipamento_model->excluir($codigo);
>  if ( $retorno == '0'){
>       echo "OK!";
>  }else{
>       echo "erro " . $retorno;
>  }
>
> Não sei se esse é o melhor método, gostaria da opinião do pessoal sobre a
> melhor forma de tratar esse problema.
>
> Agradeço desde já
>
>
> _______________________________________________
> Lista mailing list
> [email protected]
> http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br
>
>


-- 
Paulo Balzi
_______________________________________________
Lista mailing list
[email protected]
http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br

Responder a