Могу ли я получить ПОСЛЕДНИЙ INSERT ID () для составного ключа в MySQL?






Да. В одной таблице не может быть нескольких полей с автоинкрементом.
CREATE TABLE foo (
id1 int(11) NOT NULL auto_increment,
id2 int(11) NOT NULL default '0',
PRIMARY KEY (id1, id2)
);
INSERT INTO foo VALUES (DEFAULT, 2);
SELECT LAST_INSERT_ID(); -- returns 1, the value generated for id1
LAST_INSERT_ID() возвращает значение только для столбца, объявленного AUTO_INCREMENT. Нет функции для возврата значения в составном первичном ключе, который не было сгенерировал системой. Вы уже должны знать это значение, поскольку вы только что указали его в операторе INSERT. Сложный случай - это когда триггер или что-то переопределяет значение.
Итак, 7 лет спустя ответ верен.
«Вы не можете иметь несколько полей с автоинкрементом в одной таблице». Я этого не знал, поэтому я попытался создать таблицу с двумя полями автоинкремента и получил следующую ошибку: Неверное определение таблицы; может быть только один автоматический столбец, и он должен быть определен как ключ.