Могу ли я получить идентификатор INSERT/UPDATE одним запросом?
У меня есть следующий код:
$put_tag_rq = $DBH->prepare( "
INSERT INTO `tags`
SET
`name` = :name
ON DUPLICATE KEY UPDATE
`id` = `id`
" );
$put_tag_rq->execute( array(
'name' => $tag,
) );
$tag_id = $DBH->lastInsertId();
echo "***********Last insert ID = $tag_id<br>";
Обратите внимание, что name
также является ключом вкладки.
Этот код работает нормально, если вставка name
тег еще не представлен в таблице. Но lastInsertId() возвращает 0, если name
уже здесь.
Конечно, я мог сделать два запроса: сначала проверить, name
тег уже представлен на вкладке (и получить его идентификатор) и второй для вставки name
уже представлен на вкладке.
Но я думаю, что это должно быть проще. Не так ли?
1 ответ
Решение
Это MySQL, который вы ищете: http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
И больше информации о том, как сделать это в php: PHP MYSQL UPDATE, если существует, или INSERT, если нет?