यह तालिका के स्कीमा (प्राथमिक कुंजी के नाम के अलावा) के बिना * वाक्यविन्यास का उपयोग करके किया जा सकता है। यह चाल "टेबल बनाएं AS" वाक्यविन्यास का उपयोग करके अस्थायी तालिका बनाना है।
इस उदाहरण में मुझे लगता है कि "आईडी" नामक एक मौजूदा, आबादी वाली तालिका है जिसे "आईडी" कहा जाता है, साथ ही साथ कई अन्य कॉलम भी हैं। "Src" की पंक्तियों डुप्लिकेट बनाने के लिए, sqlite3 में निम्नलिखित एसक्यूएल का उपयोग करें:
CREATE TEMPORARY TABLE tmp AS SELECT * FROM src;
UPDATE tmp SET id = NULL;
INSERT INTO src SELECT * FROM tmp;
DROP TABLE tmp;
ऊपर के उदाहरण तालिका "src" की सभी पंक्तियों डुप्लिकेट। वांछित पंक्ति को केवल डुप्लिकेट करने के लिए, बस पहली पंक्ति में WHERE क्लॉज जोड़ें। यह उदाहरण काम करता है क्योंकि तालिका "tmp" में कोई प्राथमिक कुंजी बाधा नहीं है, लेकिन "src" करता है। स्रोत में पूर्ण प्राथमिक कुंजी डालने से उन्हें स्वत: जेनरेट किए गए मान दिए जाते हैं।
SQLite प्रलेखन से: http://www.sqlite.org/lang_createtable.html
ए 'तालिका बनाएं ... के रूप में चयन "बयान बनाता है और एक डेटाबेस एक SELECT कथन के परिणामों पर आधारित तालिका भरता है। CREATE तालिका का उपयोग करके बनाई गई एक तालिका के रूप में कोई प्राथमिक कुंजी नहीं है और किसी भी प्रकार की बाधा नहीं है।
यदि आप वास्तव में फैंसी प्राप्त करना चाहते हैं, तो आप एक ट्रिगर जोड़ सकते हैं जो एक तीसरी तालिका अपडेट करता है जो पुरानी प्राथमिक कुंजी को नई जेनरेट की गई प्राथमिक कुंजी के लिए मानचित्र करता है।
स्रोत
2012-02-23 17:44:25
चुनता है। यह मेरे लिए काम नहीं करता है, यह कहता है कि 'एन + 1 मान प्रदान किए गए हैं जहां एन कॉलम उपलब्ध हैं' –