Это должно, по крайней мере, теоретически, работать для вас:
Сначала расширьте вашу таблицу, чтобы иметь дополнительный столбец-пустышку типа tinyint.Затем вы можете использовать следующий запрос при вставке / обновлении:
INSERT INTO yourtable (a, b) VALUES (1, 2) ON DUPLICATE KEY UPDATE id = LAST_INSERT_ID(id), dummy = NOT dummy
(здесь я предполагаю, что столбец a имеет уникальный индекс и существует строка с = 1).
Затем вы можете получить идентификатор новой строки (в случае вставки) или существующей строки (в случае обновления) через
SELECT LAST_INSERT_ID()