डीएमएल बनाम डीडीएल भेद उनके नामों के रूप में स्पष्ट नहीं है, इसलिए चीजें कभी-कभी थोड़ी खराब हो जाती हैं।
ऑरेकल कॉन्सेप्ट गाइड में डीडीएल के रूप में स्पष्ट रूप से वर्गीकृत हैTRUNCATE , लेकिन DELETEडीएमएल के रूप में।
TRUNCATEOracle पर DDL कैंप में मुख्य बिंदु , जैसा कि मैं समझता हूँ, वे हैं:
TRUNCATEभंडारण पैरामीटर ( NEXTपैरामीटर) को बदल सकते हैं , और वे ऑब्जेक्ट परिभाषा का हिस्सा हैं - जो DDL शिविर में है।
TRUNCATEएक निहित है commit, और वापस नहीं लुढ़काया जा सकता है (फ्लैशबैक एक तरफ) - अधिकांश (सभी?) डीडीएल संचालन ओरेकल में ऐसा करते हैं, कोई बीएमएल नहीं करता है।
यह तथ्य जो ट्रिगर TRUNCATEनहीं ON DELETEकरता है, उसे सामान्य डीएमएल संचालन से अलग करता है (लेकिन कुछ प्रत्यक्ष पथ डीएमएल संचालन भी ट्रिगर को छोड़ देते हैं, इसलिए यह एक स्पष्ट संकेतक नहीं है)।
यही दस्तावेज DELETEUNDO उत्पन्न TRUNCATEकरता है , लेकिन ऐसा नहीं है, इसलिए आपका कथन इस संदर्भ में सही है। (ध्यान दें कि TRUNCATEकुछ उत्पन्न करता है REDOताकि पुनर्स्थापना / पुनर्प्राप्ति के मामले में ट्रंकेशन को फिर से दोहराया जा सके।) लेकिन कुछ NOLOGGINGऑपरेशन यूएनडीओ को कम भी कर सकते हैं (बिल्कुल भी किसी के बारे में निश्चित नहीं), इसलिए यह मेरी राय में भी स्पष्ट संकेतक नहीं है।
तो मैं इसे इस प्रकार लिखूंगा:
truncate"लेन-देन" इस अर्थ में नहीं है कि यह शुरू होता है और इसे वापस नहीं लाया जा सकता है, और वस्तु भंडारण विशेषताओं को संशोधित कर सकता है। तो यह साधारण DML नहीं है - Oracle इसे DDL के रूप में वर्गीकृत करता है।
delete एक सामान्य डीएमएल स्टेटमेंट है।