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

