Да. Вы не можете иметь несколько полей с автоинкрементом в одной таблице.
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
выражении. Сложный случай, когда триггер или что-то переопределяет значение.