यदि आप ऐसे कई रिकॉर्ड बनाना चाहते हैं (10 उपयोगकर्ताओं को पंजीकृत करने के लिए, केवल एक नहीं)? मैं निम्नलिखित समाधान (सिर्फ 5 क्वेरी) पाते हैं:
चरण I: नए डेटा को संग्रहीत करने के लिए अस्थायी तालिका बनाएं।
CREATE TEMPORARY TABLE tmp (id bigint(20) NOT NULL, ...)...;
इसके बाद, इस तालिका को मानों के साथ भरें।
INSERT INTO tmp (username, password, bio, homepage) VALUES $ALL_VAL
यहाँ, के बजाय $ALL_VAL
आप मूल्यों की सूची रखते हैं: ('test1', 'test1', 'bio1', 'home1'), ..., ('testn', 'testn', 'bion', 'homen')
चरण II: 'उपयोगकर्ता' तालिका में डेटा भेजें।
INSERT IGNORE INTO users (username, password)
SELECT username, password FROM tmp;
यहां, "IGNORE" का उपयोग किया जा सकता है, यदि आप कुछ उपयोगकर्ताओं को पहले से ही अंदर होने की अनुमति देते हैं। वैकल्पिक रूप से आप इस चरण से पहले चरण III के समान UPDATE का उपयोग कर सकते हैं, यह पता लगाने के लिए कि उपयोगकर्ता पहले से ही अंदर हैं (और उन्हें tmp तालिका में चिह्नित करें)। यहाँ हम मानते हैं, कि उपयोगकर्ता नाम के रूप में घोषित किया गया हैPRIMARY
तालिका के में गया है।
चरण III: सभी उपयोगकर्ताओं को पढ़ने के लिए अद्यतन से उपयोगकर्ताओं को tmp तालिका पर लागू करें। यह आवश्यक कदम है।
UPDATE tmp JOIN users ON tmp.username=users.username SET tmp.id=users.id
चरण IV: उपयोगकर्ताओं के लिए रीड आईडी का उपयोग करके एक और तालिका बनाएं
INSERT INTO profiles (userid, bio, homepage)
SELECT id, bio, homepage FROM tmp