Другой и более правильный подход - использовать LAST_INSERT_ID () in ON DUPLICATE KEY UPDATE
То есть изменить:
INSERT IGNORE INTO the_table (id) VALUES (1);
Кому:
INSERT INTO the_table (id) VALUES (1)
ON DUPLICATE KEY UPDATE
id = LAST_INSERT_ID(id);
Это не изменит таблицу, но следующий вызов LAST_INSERT_ID () вернет либо идентификатор недавно вставленного элемента, либо последний результат, явно переданный в функцию.