Собственно, вопрос:
Среда:
MySQL 5.0.X, mysql storage procedure
Имею запрос вида:
INSERT INTO
t( x, y )
VALUES
( a, b )
ON DUPLICATE KEY UPDATE
y = b;
Таблица имеет поля:
id : int, primary key, autoincrement
x : int, unique
y : int
После выполнения этого запроса в таблицу либо добавляется новая строка, либо обновляется существующая.
Задача:
получить id добавленной или обновленной строки.
При добавлении можно взять id путем LAST_INSERT_ID()
Как получить id после обновления - непонятно. Единственное решение, которое мне приходит в голову - это сделать select:
select id into last_id from t where x = a;
Но не очень хочется этого делать т.к. таблица будет иметь десятки и сотни тысячи строк, что может привести к снижению производительности даже при использовании индексов ( уникальное поле состоит из 2х полей ).
Может быть есть какое-то другое решение данной проблемы?