TRUNCATE
कोई रोलबैक डेटा उत्पन्न नहीं करता है, जो इसे बहुत तेज़ बनाता है। यह केवल तालिका द्वारा उपयोग किए गए डेटा पृष्ठों को हटा देता है।
हालांकि, यदि आप किसी लेन-देन में हैं और इस डिलीट को "पूर्ववत" करने की क्षमता चाहते हैं, तो आपको DELETE FROM
का उपयोग करने की आवश्यकता है , जो रोलबैक करने की क्षमता देता है।
संपादित करें: ध्यान दें कि उपरोक्त SQL सर्वर के लिए गलत है (लेकिन यह Oracle पर लागू होता है)। SQL सर्वर में, यदि आप किसी लेन-देन के अंदर हैं और लेन-देन नहीं किया गया है, तो एक ट्रंकेट ऑपरेशन को रोलबैक करना संभव है। SQL सर्वर के दृष्टिकोण से, DELETE FROM और TRUNCATE के बीच एक महत्वपूर्ण अंतर है यहए> :"DELETE कथन एक बार में पंक्तियों को हटाता है और प्रत्येक हटाई गई पंक्ति के लिए लेन-देन लॉग में एक प्रविष्टि दर्ज करता है। TRUNCATE TABLE तालिका डेटा को संग्रहीत करने के लिए उपयोग किए गए डेटा पृष्ठों को हटाकर डेटा को हटा देता है और लेनदेन लॉग में केवल पृष्ठ डीललोकेशन को रिकॉर्ड करता है। ।"
दूसरे शब्दों में, TRUNCATE के दौरान कम लॉगिंग होती है क्योंकि लेन-देन लॉग में केवल पेज डीललोकेशन रिकॉर्ड किए जाते हैं, जबकि DELETE FROM प्रत्येक पंक्ति विलोपन को रिकॉर्ड किया जाता है। यही एक कारण है कि TRUNCATE की बिजली बहुत तेज़ है।
उस एमएसडीएन लिंक से भी ध्यान दें कि आप विदेशी कुंजी बाधाओं द्वारा संदर्भित तालिकाओं को छोटा नहीं कर सकते हैं, अनुक्रमित दृश्य में भाग लेते हैं, या लेनदेन संबंधी प्रतिकृति या मर्ज प्रतिकृति का उपयोग करके प्रकाशित होते हैं।
संपादित करें 2: एक अन्य महत्वपूर्ण बिंदु यह है कि TRUNCATE TABLE आपकी पहचान को प्रारंभिक बीज में रीसेट कर देगा, जबकि DELETE FROM जहां से छोड़ा गया था, वहां से बढ़ता रहेगा। संदर्भ:बेन रॉबिन्सन का उत्तर।