2012-05-09 9 views
5

पर कॉपी करना क्या कर्सर या बाहरी स्क्रिप्ट/कोड का उपयोग किये बिना सख्ती से SQL का उपयोग करके अभिभावक रिकॉर्ड और सभी संबंधित बाल रिकॉर्ड कॉपी करने का कोई आसान तरीका है? यहाँ मैं क्या मिल गया है की एक उदाहरण है:डेटाबेस में MySQL माता-पिता और सभी संबंधित बाल रिकॉर्ड को एक नई आईडी

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> 

असल में, मैं यह सब डेटा की एक सटीक डुप्लिकेट बनाने की जरूरत है। एकमात्र फ़ील्ड जो बदलेगा वे आईडी हैं क्योंकि वे सभी auto_increment हैं। उपरोक्त स्कीमा के आधार पर, जब मैं श्रेणियों की तालिका में रिकॉर्ड्स कॉपी करता हूं तो मैं सभी नए श्रेणी_आईडी मानों के साथ समाप्त हो जाऊंगा। जब मैं parent_table रिकॉर्ड्स के डुप्लिकेट बनाता हूं तो मुझे पुराने श्रेणी_आईडी मानों को किसी भी तरह से नए श्रेणी_आईडी मानों के साथ अपडेट करने का एक तरीका चाहिए जो अभी बनाए गए थे। 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

धन्यवाद ब्रायन कर सकते हैं। मुझे उस वाक्यविन्यास से अवगत है। इससे मेरे संबंधित मुद्दों को अन्य संबंधित रिकॉर्ड्स की प्रतिलिपि बनाने और सभी नई आईडी को ट्रैक/अपडेट करने के साथ हल नहीं किया जाता है। – ShawnCBerg

संबंधित मुद्दे