У меня есть две таблицы, и я хочу написать многостраничный запрос так, чтобы PK из первой таблицы автоматически вставлялся как fk в другую таблицу.
Допустим, следующие схемы таблиц:
tblParent
ParentID (Primary Key Auto increment)
ParentValue
tblChild
ChildID (Primary Key Auto increment)
FkParentID (Foreign Key)
ChildValue
Теперь я хочу написать многостраничный запрос, подобный следующему
INSERT INTO tblParent, tblChild (ParentValue, FkParentID, ChildValue) VALUES ('Parent 1', <ParentID of 'Parent 1'>, 'Child 1'), ('Parent 2', <ParentID of 'Parent 2'>, 'Child 2'), ('Parent 3', <ParentID of 'Parent 3'>, 'Child 3')
Но я не знаю, как это сделать.У меня есть миллионы записей для вставки в эти таблицы.И я не хочу вставлять запись в первую таблицу, затем извлекать родительский идентификатор и вставлять записи во вторую таблицу.
Редактировать 1: Моя база данных - Mysql InnoDb
Редактировать 2: Таблицы вВопрос имеет отношение один ко многим.Таким образом, это означает, что я хочу выполнить одну вставку в tblParent и несколько вставок в tblChild для каждой записи в tblParent
Edit 3:
Я искал в документации MySql и наткнулся на следующееdescription:
https://dev.mysql.com/doc/refman/8.0/en/information-functions.html#function_last-insert-id
Выполняемый в данный момент оператор не влияет на значение LAST_INSERT_ID ().Предположим, что вы генерируете значение AUTO_INCREMENT с одним оператором, а затем ссылаетесь на LAST_INSERT_ID () в многострочном операторе INSERT, который вставляет строки в таблицу со своим собственным столбцом AUTO_INCREMENT.Значение LAST_INSERT_ID () останется стабильным во втором выражении;его значение для второй и последующих строк не зависит от более ранних вставок строк.(Однако, если вы смешаете ссылки на LAST_INSERT_ID () и LAST_INSERT_ID (expr), эффект не определен.)
Поэтому мой следующий вопрос: как поведет себя LAST_INSERT_ID
в случае множественной вставки дляtblParent, который в свою очередь имеет несколько вставок в tblChild для каждого tblParent