Как получить первичный ключ Database_Exception [1062] (повторяющаяся запись) в Kohana 3.2?

Допустим, у меня есть таблица со столбцом с именем a. На нем есть индекс UNIQUE KEY.

В модели ORM я пытаюсь вставить в эту таблицу. Это способ поймать Database_Exception [ 1062 ], который возникает, когда пользователь пытается вставить что-то неуникальное в столбец a:

function save(Validation $validation = null) {
     try {
         parent::save($validation);
     } 
     catch (Database_Exception $exception) {
         if ($exception->getCode() === 1062) {
            // PK?
         }
     }
}

Теперь я пытаюсь получить первичный ключ записи, в котором уже есть тот контент, который я пытался продублировать. Возможно ли это без дополнительных SQL-запросов? Я надеюсь, что первичный ключ этой строки где-то возвращается.

Извините за бессмыслицу, но это было довольно сложно объяснить. Спасибо за совет!


person daGrevis    schedule 12.11.2011    source источник
comment
Я так не думаю. Но поскольку a имеет уникальный индекс, вы можете выполнять любые запросы к этой таблице, используя $this->a вместо первичного ключа.   -  person John Watson    schedule 12.11.2011


Ответы (1)


НЕТ, это невозможно.

Не ожидается, что это также будет иметь primary key для этой повторяющейся записи из исключения.

  • Это базовая база данных, которая генерирует это исключение.
  • Это было бы возможно, если бы база данных могла каким-то образом сообщить об этом сообщении. Но это приведет к большому количеству подобных случаев, когда потребуется гораздо больше информации. И все поставщики баз данных должны подтвердить это, что, я считаю, невозможно.
person Kowser    schedule 12.11.2011