2015-08-24 21 views
1

我正在編寫一個遷移腳本,以將舊網站上的自定義表中的數據複製到新網站上的wordpress樣式表中。最初,我想我可以逃脫只是創建SQL語句,然後使用插入staements在wordpress表上創建新的數據。MYSQL SQL將值從執行傳遞到後續的sql語句

Categories表老系統上:IDNAMESEQUENCE

Subcatoegories老系統上:IDNAMEPARENT_IDSEQUENCE

我現在認識到,對於類別ID是auto_increment字段,所以我不知道它的值,直到它插入。因此,我無法爲子類別SQL提供PARENT_ID的值。

Insert into wp_categories (NAME,SEQUENCE) values ('MUSIC',1); 

,將工作不錯,但我無法弄清楚如何將生成的ID值傳遞給下一個SQL語句

Insert into wp_subcategories (NAME,PARENT_ID,SEQUENCE) values ('ROCK MUSIC',1, ???); 

的3個問號是ID在前面的SQL語句插入的值。是否有可能這樣做,或者我將不得不編寫一些PHP腳本來處理這個問題。

回答

2

使用LAST_INSERT_ID()

Insert into wp_subcategories (NAME,PARENT_ID,SEQUENCE) 
values ('ROCK MUSIC', LAST_INSERT_ID(), 1); 

每您的評論;將值存儲在局部變量中,並使用該局部變量,而不是像

Insert into wp_categories (NAME,SEQUENCE) values ('MUSIC',1); 

SET @categoru_PK = LAST_INSERT_ID(); 

Insert into wp_subcategories (NAME,PARENT_ID,SEQUENCE) values ('ROCK MUSIC',1, @categoru_PK); 

Insert into wp_subcategories (NAME,PARENT_ID,SEQUENCE) values ('SAD MUSIC',2, @categoru_PK); 
+0

哇 - 很好,很簡單 - 讓我試試看,然後在答案上投票。謝謝您的幫助。 –

+0

不幸的是,主類別有超過1個子類別,所以它不起作用。主類別將被添加並且子類別的下一個sql將起作用,但是之後我需要添加另一個子類別,並且最後的插入ID將是子類別而不是主類別。 –

+0

在這種情況下,請將該值存儲在本地變量中,然後使用該局部變量。請參閱編輯答案。 – Rahul