sql-server - कॉलम SQL सर्वर 2008 का नाम बदलें




sql-server-2008 alter-table (7)

मैं एसक्यूएल सर्वर 2008 और Navicat का उपयोग कर रहा हूँ। मुझे SQL का उपयोग करके तालिका में कॉलम का नाम बदलने की आवश्यकता है।

ALTER TABLE table_name RENAME COLUMN old_name to new_name;

यह कथन काम नहीं करता है।


Answers

आप कॉलम का नाम बदलने के लिए sp_rename का उपयोग कर सकते हैं।

USE YourDatabase;  
GO  
EXEC sp_rename 'TableName.OldColumnName', 'NewColumnName', 'COLUMN';  
GO  

पहला पैरामीटर संशोधित करने वाला ऑब्जेक्ट है, दूसरा पैरामीटर नया नाम है जो ऑब्जेक्ट को दिया जाएगा, और तीसरा पैरामीटर COLUMN सर्वर को सूचित करता है कि नाम column , और इसका उपयोग tables का नाम बदलने के लिए भी किया जा सकता है, index और alias data type


sp_rename प्रयोग करें

EXEC sp_RENAME 'TableName.OldColumnName' , 'NewColumnName', 'COLUMN'

देखें: एसक्यूएल सर्वर - कॉलम नाम या टेबल नाम का नाम कैसे बदलें

प्रलेखन: sp_rename (ट्रांजैक्ट-एसक्यूएल)

आपके मामले के लिए यह होगा:

EXEC sp_RENAME 'table_name.old_name', 'new_name', 'COLUMN'

अपने मूल्यों को संलग्न करने के लिए सिंगल कोट्स का उपयोग करना याद रखें।


चूंकि मैं अक्सर यहां आ जाता हूं और फिर सोचता हूं कि ब्रैकेट का उपयोग कैसे करें, यह उत्तर मेरे जैसे लोगों के लिए उपयोगी हो सकता है।

EXEC sp_rename '[DB].[dbo].[Tablename].OldColumnName', 'NewColumnName', 'COLUMN'; 
  • OldColumnName [] में नहीं होना चाहिए। यह काम नहीं करेगा।
  • NewColumnName को [] में न NewColumnName , इसका परिणाम [[NewColumnName]]

पहले से ही अंतर्निर्मित फ़ंक्शन का उपयोग करने के लिए यह एक अच्छा सुझाव होगा लेकिन आसपास का एक और तरीका यह है:

  1. एक ही डेटा प्रकार और नए नाम के साथ एक नया कॉलम बनाएं।
  2. सभी डेटा को नए कॉलम में कॉपी करने के लिए एक अद्यतन / INSERT कथन चलाएं।
  3. पुराने कॉलम ड्रॉप करें।

sp_rename का उपयोग करने के पीछे लाभ यह है कि यह इसके साथ जुड़े सभी संबंधों का ख्याल रखता है।

documentation :

जब भी प्राथमिक कुंजी या अद्वितीय बाधा का नाम बदल दिया जाता है तो sp_rename स्वचालित रूप से संबंधित अनुक्रमणिका का नाम बदलता है। यदि एक नामित सूचकांक प्राथमिक कुंजी बाधा से जुड़ा हुआ है, तो प्राथमिक कुंजी बाधा स्वचालित रूप से sp_rename द्वारा भी बदल दी जाती है। sp_rename प्राथमिक और माध्यमिक एक्सएमएल इंडेक्स का नाम बदलने के लिए इस्तेमाल किया जा सकता है।


वैकल्पिक रूप से SQL , आप इसे माइक्रोसॉफ्ट एसक्यूएल सर्वर प्रबंधन स्टूडियो में कर सकते हैं। GUI का उपयोग करके कुछ त्वरित तरीके यहां दिए गए हैं:

पहला रास्ता

कॉलम पर धीरे-धीरे डबल-क्लिक करें। कॉलम का नाम एक संपादन योग्य टेक्स्ट बॉक्स बन जाएगा।

दूसरा रास्ता

कॉलम पर राइट क्लिक करें और संदर्भ मेनू से नाम बदलें चुनें।

उदाहरण के लिए:

तीसरा रास्ता

इस तरह से एक बार में कई स्तंभों का नाम बदलने की आवश्यकता होती है।

  1. उस तालिका पर राइट-क्लिक करें जिसमें कॉलम शामिल है जिसे नाम बदलने की आवश्यकता है।
  2. डिजाइन पर क्लिक करें।
  3. तालिका डिज़ाइन पैनल में, उस कॉलम नाम के टेक्स्टबॉक्स पर क्लिक करके संपादित करें जिसे आप बदलना चाहते हैं।

उदाहरण के लिए:

नोट: मुझे पता है कि ओपी ने विशेष रूप से एसक्यूएल समाधान के लिए कहा था, सोचा था कि यह दूसरों की मदद कर सकता है :)


प्रयत्न:

EXEC sp_rename 'TableName.OldName', 'NewName', 'COLUMN'

कभी-कभी उस डेटाबेस के सर्वर के आईपी ​​पते के साथ-साथ पोर्ट भी परिभाषित करता है ...

mysql -u user -p user -h <Server IP> -P<port> (DBNAME) < DB.sql 




sql sql-server sql-server-2008 alter-table