Realmente esperar que o erro ocorra pode ser bastante oneroso, talvez uns selects para verificar a integridade possa ser uma boa solução, no entando, será que o codeigniter possui alguma forma para capturar tal erro gerado pelo banco de dados? como ele trata tal exceção?
2009/2/13 Ricardo Valfreixo <[email protected]> > Esse é um estilo de programação. Por exemplo num insert, faz-se apenas com > o id, ou seja, insere-se uma linha em branco. Depois faz-se um update com os > dados ao insert_id. É útil para um sistema de alto débito com muitos > inserts. Reduz-se ao mínimo o tempo de insert. Depois temos todo o tempo do > mundo para fazer o update pois o id já está reservado. > > // Zen > > > > 2009/2/13 Paulo Balzi <[email protected]> > > 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 >> >> > > _______________________________________________ > Lista mailing list > [email protected] > http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br > >
_______________________________________________ Lista mailing list [email protected] http://codeigniter.com.br/mailman/listinfo/lista_codeigniter.com.br

