CDbException код ошибки несостоявшися sql-выражений

Здраствуйте, столкнулся с такой непонятной проблемой




      try{

        $form->delete();

      }catch( CDbException $ex){

        $message = $ex->getMessage();

        $code = $ex->getCode();

        if ( $code == 1451 && strpos($message, GoodTypes::FK_CATEGORY. )>0 )

          $message = "Can't delete type. It using in categorys";


      }



в переменной $message у меня следующее сообщение:


CDbCommand failed to execute the SQL statement: SQLSTATE[HY000]: General error: 1451 Cannot delete or update a parent row: a foreign key constraint fails (`honey`.`good_categorys`, CONSTRAINT `good_categorys_fk` FOREIGN KEY (`type_id`) REFERENCES `good_types` (`id`))

Я думал, что очевидно и в $code у меня код ошибки для SQL-выражения, то есть 1451. Ну не тут то было. Оказывается там 0. Я посмотрел исходники, действительно никакого намека на то чтобы возвращать код ошибки для SQL-выражений, через средства PDO.

Возникает вопрос, как получить этот код ошибки, так как возникла ситуация в зависимости от кода выдавать разные сообщения?

Ребята, я что велосипед придумал или это действительно надуманная проблема. Никто не сталкивался или никому не надо отслеживать подобные вещи?

А зачем писать обработку отталкиваясь от того какую ошибку кинет база?

Не проще перед обновлением/удалением проверять существование такой записи в бд?