Итак, есть много вопросов и ответов о LAST_INSERT_ID(). Это прекрасно работает, если вы вставляете одну строку и вам нужно возвращаемое значение этого идентификатора, но что, если вы делаете групповую вставку и вам нужны возвращаемые значения всех идентификаторов AUTO_INCREMENT?
Возьмите эту таблицу:
Name | Data1 | Data2 | Data3
---------------------------------------------------
Name 1 | blah | Herp | Derp
Name 2 | rwwe | asdf | 3445
Name 3 | asdf | asdf | 8678
Name 1 | guih | adsf | 3565
Name 1 | asfg | rwer | 7877
Мне нужно вставить значение Name 1
в таблицу, а затем взять это primary key
и вставить значения из Data1, 2 и 3 в другие таблицы, которые имеют ограничение первичного ключа.
Проблема в том, что «Имя» не уникально, поэтому я не могу запросить исходную/промежуточную таблицу и получить значения таким образом.
Согласно документации, last_insert_id() работает в контексте одного оператора INSERT. Я все-таки протестировал.
Я также попытался записать значение обратно в таблицу, но, конечно, SQL работает с наборами:
insert into test_fetch_id(lastname,Last_ID)
select RESOURCE_ID, last_insert_id() from resources r limit 100;
Даю мне:
Любая помощь будет принята с благодарностью.
last_insert_id
и узнать, сколько строк вы вставили. В противном случае вам может понадобиться дополнительный столбец для хранения идентификатора вставки группы, который позволит вам выбрать то, что вы вставили позже. - person didierc   schedule 16.07.2014