Мы используем в нашем проекте такие конструкции:
$this->db->_error_number();
$this->db->_error_message();
но это недокументированные функции и в следующих выпусках это может измениться.
Конечно, вы можете просто использовать стандартный php для функции обработки ошибок mysql:
mysql_errno()
mysql_error()
внутренне CI использует эти функции.
Что касается меня, лучше всего использовать базовый класс пользовательской модели (BaseModel)
$this->db->_error_number();
и определите ошибку, исключение следующего выброса с информационным сообщением об ошибке, взятым из
$this->db->_error_message();
Вся ваша Модель, полученная из BaseModel, и метод вызова для проверки последнего запроса на наличие ошибки БД, и ваша Модель должна обработать исключение и обработать его (может быть дополнительно зарегистрировано), конечно, вы можете реализовать результат проверки как значение результата и избежать исключение.