2012-05-09 20 views
5

是否有一種簡單的方法使用嚴格的SQL複製父記錄和所有相關的子記錄而不使用遊標或外部腳本/代碼?下面是我的本錢的例子:將數據庫中的MySQL父項和所有相關子記錄複製到一個新的ID

categories 
== 
category_id 
category_name 

parent_table 
== 
parent_record_id 
category_id 
... <other fields> 

child_table1 
== 
child_table1_id 
parent_record_id 
... <other fields> 

child_table2 
== 
child_table2_id 
parent_record_id 
... <other fields> 

基本上,我需要所有這些數據的精確副本。唯一會更改的字段是ID,因爲它們都是auto_increment。根據上面的模式,當我複製類別表中的記錄時,我將最終得到所有新的category_id值。當我創建parent_table記錄的重複項時,我將需要一種方法來以某種方式更新舊category_id值與新創建的category_id值。然後,我需要在複製child_record1和child_record2記錄時使用新的parent_record_id值。

我覺得必須有一種更簡單的方法來完成這個任務,而不是在PHP或其他語言中將其全部編寫出來。在那兒?

回答

1

看看這篇文章,http://dev.mysql.com/doc/refman/5.1/en/insert-select.html

基本上你可以做以下

INSERT INTO table (id, column1, column2) (SELECT NULL, column1, column2 FROM table WHERE whatever_id = 123); 
+0

感謝布賴恩。我知道這種語法。這並不能解決我複製其他相關記錄並跟蹤/更新所有新ID的問題。 – ShawnCBerg

相關問題