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




sql-server sql-server-2008 (5)

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

ALTER TABLE table_name RENAME COLUMN old_name to new_name;

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

https://code.i-harness.com


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

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

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


आपको तालिका की स्कीमा भी निर्दिष्ट करनी चाहिए या आपको यह त्रुटि मिल सकती है:

संदेश 15248, स्तर 11, राज्य 1, प्रक्रिया sp_rename, रेखा 238 या तो पैरामीटर @objname संदिग्ध है या दावा किया गया @objtype (COLUMN) गलत है।

यदि यह एक तैनाती स्क्रिप्ट है तो मैं इसमें कुछ अतिरिक्त सुरक्षा जोड़ने की भी सिफारिश करता हूं।

    if  exists (select 1 from sys.columns where name = 'OldColumnName' and object_name(object_id) = 'TableName') AND
not exists (select 1 from sys.columns where name = 'NewColumnName' and object_name(object_id) = 'TableName')
EXEC sp_RENAME 'SchemaName.TableName.OldColumnName', 'NewColumnName', 'COLUMN';

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

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

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

documentation :

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


प्रयत्न:

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

sp_rename प्रयोग करें

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

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

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

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

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

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







alter-table