Я реализую функцию «Сохранить как копию» для небольшого веб-приложения, использующего MySQL.
Допустим, у меня есть три таблицы, например ...
TABLE Doc
ID,
title,
text
TABLE DocAttributes
ID,
DocID -> Doc(ID)
title,
text
TABLE DocSubAttributes
DocAttrID -> DocAttributes(ID)
title,
text
Чтоу нас есть ситуация, когда один документ может иметь несколько DocAttributes, и каждый DocAttribute может, в свою очередь, иметь несколько SubAttributes.
Теперь, если бы мне не пришлось беспокоиться о таблице DocSubAttributes, это было бы довольно простои я бы сделал что-то вроде этого ...
$insertID = INSERT INTO Doc (title, text) SELECT title, text FROM Doc WHERE ID = $docID;
INSERT INTO DocAttributes DocID, title, text SELECT $insertID AS DocID, title, text FROM Doc WHERE ID = $docID;
Однако, поскольку существует третья таблица «один ко многим», этот метод не работает.Мне нужно знать первичные ключи для каждой строки DocAttributes для создания соответствующих строк в DocSubAttributes.
Единственный известный мне способ сделать это - перебирать DocAttributes по одной строке за раз, выбирая все DocSubAttributes с помощьюкаждая итерация, а затем итеративное выполнение каждой вставки, снова по одной за раз.
Мне интересно: существует ли более простой способ дублировать эти строки в соответствующих таблицах, чтобы создать совершенно новый и отдельный объект данных безполагаться на итерацию?
Спасибо за помощь