Intereting Posts

Как вставить строку и игнорировать только UNIQUE ошибки, не используя SELECT

У меня есть таблица с столбцом, который должен иметь UNIQUE значения (но это может быть также индекс UNIQUE с несколькими столбцами, проблема такая же). В моем PHP-скрипте мне нужно вставить строку в эту таблицу.

Я ищу способ, а не специфичный для MySQL, выйти из PHP-скрипта, если есть проблема, и проблема не является нарушением ограничения UNIQUE. Чтобы сделать вещи более легкими, я не хочу использовать запрос SELECT раньше: D

В настоящее время я делаю что-то вроде этого:

try { $stmt = $dbh->prepare($someinsertquery); $stmt->bindParam(':somecol', $somecol); $stmt->execute(); } catch (PDOException $e) { $errcode = $e->getCode(); if (! ($e->getCode() === '23000')) { echo 'Error inserting into db: ' . $e->getMessage(); var_dump($e->getTrace()); exit(); } } 

Проблема в том, что таким образом я пропускаю также ошибки, связанные с внешними ключами. Я думаю, что это нормально, если я не могу иметь проблемы с внешними ключами, вставляя новую строку, но что, если я буду менять таблицу в будущем? Я мог бы использовать

 PDOStatement::errorInfo[1] 

но это код ошибки, специфичный для драйвера . То же самое с ON DUPLICATE KEY UPDATE.

Solutions Collecting From Web of "Как вставить строку и игнорировать только UNIQUE ошибки, не используя SELECT"