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