我正在爲使用MySQL的小型Web應用程序實現「另存爲複製」功能。在表,子表和子表中複製行的最簡單方法
比方說,我有三個表,像這樣......
TABLE Doc
ID,
title,
text
TABLE DocAttributes
ID,
DocID -> Doc(ID)
title,
text
TABLE DocSubAttributes
DocAttrID -> DocAttributes(ID)
title,
text
我們這裏是這樣一種情況:一個文檔可以有多個DocAttributes,每個能的DocAttribute依次有多個子屬性。
現在,如果我沒有擔心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,然後迭代地一次一個地執行每次插入。
我在想:是否有一種更簡單的方法來複制這些行在其各自的表中創建一個全新的獨立的數據實體而不依賴迭代?
感謝您的幫助