किसी तालिका में एक कॉलम में सिसडेट का डिफ़ॉल्ट मान होता है और मैं इसे बदलना चाहता हूं इसलिए इसे कोई डिफ़ॉल्ट मान नहीं मिलता है, मैं यह कैसे कर सकता हूं?मैं ओरेकल में कॉलम से डिफ़ॉल्ट मान कैसे हटा सकता हूं?
उत्तर
ALTER TABLE YourTable MODIFY YourColumn DEFAULT NULL;
जो भी आप चाहते हैं उसे करने का एकमात्र तरीका तालिका को फिर से बनाना है।
टॉड में करना बहुत आसान है, बस तालिका पर राइट क्लिक करें और "पुनर्निर्माण तालिका" का चयन करें। टोड स्क्रिप्ट तैयार करेगा जो तालिका का नाम बदल देगा और एक नई तालिका को फिर से बनाएगा। लिपि इंडेक्स, बाधाओं, विदेशी कुंजी, टिप्पणियां इत्यादि को फिर से बनाएगी ... और डेटा के साथ तालिका को पॉप्युलेट करेगा।
प्रश्न में कॉलम के बाद बस "डिफ़ॉल्ट शून्य" को हटाने के लिए स्क्रिप्ट को संशोधित करें।
एक स्तंभ ड्रॉप कर सकते हैं और उसे फिर से जोड़ना। 'वैकल्पिक तालिका mytable ड्रॉप कॉलम mycolumn; ALTER तालिका mytable जोड़ें MyColumn तिथि; ' –
यह है काम करते हैं, केवल मुद्दा यह है कि यह स्तंभ सूची में नीचे ले स्तंभ पर आ जाएगा है। यदि आप कॉलम ऑर्डर को संरक्षित करना चाहते हैं, तो तालिका को छोड़ें और फिर से बनाएं। –
Joe's answer इस अर्थ में कि DEFAULT NULL
के साथ एक स्तंभ है में सही है कार्यात्मक पहली जगह में उस स्तंभ के लिए कोई डिफ़ॉल्ट मान परिभाषित कभी नहीं होने के बराबर: एक कॉलम कोई डिफ़ॉल्ट मान है, तो एक निर्दिष्ट किए बिना एक नई पंक्ति डालने उस कॉलम के लिए मान NULL
में परिणाम।
हालांकि, ओरेकल आंतरिक रूप से दो मामलों साफ़, का प्रतिनिधित्व करता है के रूप में ALL_TAB_COLUMNS
system view को देखकर देखा जा सकता है *
मामले में जहां एक स्तंभ बना दिया गया है, या
ALTER
एड,DEFAULT NULL
साथ।:create table foo (bar varchar2(3) default null); select default_length, data_default from all_tab_columns where table_name='FOO'; => default_length data_default -------------- ------------ 4 NULL select dbms_metadata.get_ddl('TABLE','FOO') from dual; => CREATE TABLE "FOO" ( "BAR" VARCHAR(3) DEFAULT NULL … )
कोई डिफ़ॉल्ट कभी निर्दिष्ट:
create table foo (bar varchar2(3)); select default_length, data_default from all_tab_columns where table_name='FOO'; => default_length data_default -------------- ------------ (null) (null) select dbms_metadata.get_ddl('TABLE','FOO') from dual; => CREATE TABLE "FOO" ( "BAR" VARCHAR(3) … )
जैसा कि ऊपर दिखाया गया है, वहाँ एक महत्वपूर्ण मामले में जहां यह व्यर्थ भेद Oracle की उत्पादन में एक फर्क नहीं पड़ता है: जब DBMS_METADATA.GET_DDL()
का उपयोग कर तालिका परिभाषा को निकालने के लिए।
यदि आप अपने डेटाबेस का निरीक्षण करने के लिए GET_DDL()
का उपयोग कर रहे हैं, तो आपको कार्यात्मक रूप से समान तालिकाओं के लिए थोड़ा अलग डीडीएल आउटपुट मिलेगा।
यह अन्य वास्तव में काफी कष्टप्रद है जब संस्करण नियंत्रण और एक डेटाबेस के कई उदाहरण के बीच तुलना के लिए GET_DDL()
उपयोग कर, और कोई रास्ता नहीं यह से बचने के लिए है, की तुलना में मैन्युअल GET_DDL()
के उत्पादन में संशोधित करने के लिए, या पूरी तरह से मेज से बनाना कोई डिफ़ॉल्ट मान नहीं है।
* कम से कम ओरेकल 10 जी, 11 जी और 12 सी के लिए।
मैं ड्रोप डेफॉल्ट पर एक नज़र डालेगा; मुझे नहीं पता कि यह डिफ़ॉल्ट शून्य के बराबर है लेकिन अधिक विशिष्ट लगता है। –
ओरेकल 12 के रूप में, इसमें कोई 'ड्रोप डिफॉल्ट' नहीं है। यह वास्तव में समस्या है और यही कारण है कि हमें 'डेफुल न्यूल' के साथ इसके आसपास काम करने की आवश्यकता है। (है कि आप oracle.com पर मिल 'ड्रॉप DEFAULT' के लिए कोई संदर्भ संभावना MySQL से जुड़े हुए हैं ... जो एक पूरी तरह से अलग डाटाबेस अब ओरेकल के स्वामित्व में है।) –
- 1. मैं पहले से पंजीकृत मान को कैसे हटा सकता हूं [NSUserDefaults रजिस्टर डिफ़ॉल्ट:]
- 2. क्रिस्टल रिपोर्ट 8.5/9 - मैं पैरामीटर के लिए "डिफ़ॉल्ट" मान कैसे हटा सकता हूं?
- 3. पहले से मौजूद कॉलम में डिफ़ॉल्ट मान कैसे जोड़ें?
- 4. मैं PostgreSQL में कॉलम डिफ़ॉल्ट मान कैसे बदलूं?
- 5. मैं माइक्रोसॉफ़्ट वर्ड से पेजब्रैक कैसे हटा सकता हूं?
- 6. कॉलम का डिफ़ॉल्ट मान बदलें
- 7. मैं वर्डप्रेस से वर्गीकरण कैसे हटा सकता हूं?
- 8. मैं UIViewController से UINavigationBar को कैसे हटा सकता हूं?
- 9. अन्य कॉलम से दक्षिण माइग्रेशन डिफ़ॉल्ट मान?
- 10. क्या मैं डिफ़ॉल्ट मोंगोडीबी इंडेक्स को हटा सकता हूं?
- 11. कॉलम (ओरेकल)
- 12. मैं यूआरएल से एक क्वेरी कैसे हटा सकता हूं?
- 13. sqlite3 बदलें कॉलम डिफ़ॉल्ट मान
- 14. मैं एंड्रॉइड में स्क्लाइट टेबल से कॉलम कैसे हटा सकता हूं?
- 15. मैं ओपनलेयर-मानचित्र में मानक नियंत्रण कैसे हटा सकता हूं?
- 16. मैं SQLServer SELECT कथन से एक नया पहचान कॉलम मान कैसे वापस कर सकता हूं?
- 17. मैं एक स्पैर मैट्रिक्स से कुशलता से कॉलम कैसे हटा सकता हूं?
- 18. मैं पंक्तियों को कैसे हटा सकता हूं?
- 19. मैं ओरेकल में row_number कैसे बढ़ा सकता हूं?
- 20. सेलेनियम के साथ इनपुट तत्व से मैं डिफ़ॉल्ट टेक्स्ट को लगातार कैसे हटा सकता हूं?
- 21. मैं विशेष वर्ण कैसे हटा सकता हूं?
- 22. मैं सभी लाइनब्रेक कैसे हटा सकता हूं?
- 23. मैं एक सिम्लिंक कैसे हटा सकता हूं?
- 24. मैं बैश फ़ंक्शन कैसे हटा सकता हूं?
- 25. क्लोजर/अंगूठी में, मैं कुकी कैसे हटा सकता हूं?
- 26. मैं सत्र चर को कैसे हटा या हटा सकता हूं?
- 27. मैं MySQL में किसी तालिका में प्रत्येक कॉलम को कैसे हटा सकता हूं?
- 28. मैं फोनगैप/कॉर्डोवा प्रोजेक्ट से डिफ़ॉल्ट स्थानीयकरण कैसे हटा सकता हूं?
- 29. मैं सरणी से सभी अपरिचित कैसे हटा सकता हूं?
- 30. मैं अपने प्रोजेक्ट से अनावश्यक संसाधन कैसे हटा सकता हूं?
यह पूरी तरह से सच नहीं है। आप उस डिफ़ॉल्ट मान को नहीं हटाते जिसे आपने इसे 'NULL' पर सेट किया है। डिफ़ॉल्ट मान को हटाया नहीं जा सकता है, ओरेकल दस्तावेज़ों का कहना है: "यदि किसी कॉलम का डिफ़ॉल्ट मान होता है, तो आप डिफ़ॉल्ट को NULL में बदलने के लिए DEFAULT क्लॉज का उपयोग कर सकते हैं, लेकिन आप डिफ़ॉल्ट मान को पूरी तरह से हटा नहीं सकते हैं। यानी, यदि कोई कॉलम है कभी भी इसे डिफ़ॉल्ट मान दिया गया था, तो USER_TAB_COLUMNS डेटा डिक्शनरी व्यू का DATA_DEFAULT कॉलम हमेशा डिफ़ॉल्ट मान या NULL प्रदर्शित करेगा। " –
@ माइकल-ओ क्या वह कार्यात्मक रूप से बराबर है जब कोई 'डिफॉल्ट' नहीं है? (यदि ऐसा है, तो किसी को आश्चर्य करना होगा कि वे इसे लगातार क्यों नहीं बनाते हैं और आंतरिक रूप से सबकुछ डिफ़ॉल्ट रूप से 'NULL' का 'डिफॉल्ट' देते हैं। अंतिम उपयोगकर्ता के रूप में, मुझे आंतरिक विवरणों की परवाह नहीं करनी चाहिए ।) – jpmc26
@ jpmc26, आप सही हैं कि वे * कार्यात्मक रूप से * समकक्ष हैं।हालांकि, वहाँ मामलों में जहां [यह डेटाबेस आत्मनिरीक्षण के उत्पादन को प्रभावित करता है, के रूप में मैं अपने जवाब में लिखा था] कर रहे हैं (http://stackoverflow.com/a/37265135/20789)। (यह कई बेवकूफ कोने मामलों है कि मुझे नेतृत्व समाप्त करने के लिए कि Oracle एक अत्यंत प्रोग्रामर-अमित्र डेटाबेस है में से एक है।) –