MySQL SELECT LAST_INSERT_ID () для составного ключа. Является ли это возможным? - PullRequest
3 голосов
/ 16 декабря 2008

Могу ли я получить LAST INSERT ID () для составного ключа в MySQL?

1 Ответ

7 голосов
/ 16 декабря 2008

Да. Вы не можете иметь несколько полей с автоинкрементом в одной таблице.

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

...