@sim2q

Как сразу получить AUTO_INCREMENT id дублированной записи при INSERT?

Частый случай когда нужно вставить запись, а если запись уже есть с таким UNIQ ключом, то вернуть поле AUTO_INCREMENT ID для это записи.
Сейчас делаю в лоб:
if(mysql_query("INSERT INTO tab (hash) VALUE ('hash')"))
	{
	if(mysql_errno()== ER_DUP_KEY)
		{
		mysql_query("SELECT id FROM tab WHERE hash = 'hash'");
		}
	}

Но по идее сервер же внутри уже пощупал эту запись и знает где она:)
ps INSERT ... ON DUPLICATE KEY UPDATE к сожалению не вернет AUTO_INCREMENT column для случая с UPDATE
  • Вопрос задан
  • 72 просмотра
Решения вопроса 1
Допустим так:
INSERT INTO table (a,b,c) VALUES (1,2,3)
  ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), c=3;
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@sim2q Автор вопроса
Холмс, но как?:)
Работает, но не понимаю.
Единственный недостаток - каждое попадание в дубликат генерирует INCREMENT, попробую ещё потестить что дешевле
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы