मैं SQL Server 2008 और Navicat का उपयोग कर रहा हूं। मुझे SQL का उपयोग करके तालिका में एक स्तंभ का नाम बदलने की आवश्यकता है।
ALTER TABLE table_name RENAME COLUMN old_name to new_name;
यह कथन काम नहीं करता है।
मैं SQL Server 2008 और Navicat का उपयोग कर रहा हूं। मुझे SQL का उपयोग करके तालिका में एक स्तंभ का नाम बदलने की आवश्यकता है।
ALTER TABLE table_name RENAME COLUMN old_name to new_name;
यह कथन काम नहीं करता है।
जवाबों:
उपयोग sp_rename
EXEC sp_RENAME 'TableName.OldColumnName' , 'NewColumnName', 'COLUMN'
देखें: SQL सर्वर - एक कॉलम का नाम या टेबल का नाम कैसे बदलें
प्रलेखन: sp_rename (Transact-SQL)
आपके मामले के लिए यह होगा:
EXEC sp_RENAME 'table_name.old_name', 'new_name', 'COLUMN'
अपने मूल्यों को शामिल करने के लिए एकल उद्धरणों का उपयोग करना याद रखें।
EXEC sp_RENAME '[TableName].[OldColumnName]', 'NewColumnName', 'COLUMN'
alter table
जो इस तरह के अवरोधों के मौजूद होने पर विफल हो जाएगा।
वैकल्पिक रूप से SQL
, आप इसे Microsoft SQL सर्वर प्रबंधन स्टूडियो में कर सकते हैं। यहाँ कुछ त्वरित तरीके GUI का उपयोग कर रहे हैं:
कॉलम पर डबल-क्लिक करें। कॉलम नाम एक संपादन योग्य टेक्स्ट बॉक्स बन जाएगा।
कॉलम पर राइट क्लिक करें और संदर्भ मेनू से नाम बदलें।
उदाहरण के लिए:
जब आप एक बार में कई स्तंभों का नाम बदलना चाहते हैं, तो यह तरीका बेहतर होता है।
उदाहरण के लिए:
नोट: मुझे पता है कि ओपी ने विशेष रूप से एसक्यूएल समाधान के लिए कहा था, सोचा कि यह दूसरों की मदद कर सकता है :)
आपको तालिका का स्कीमा भी निर्दिष्ट करना चाहिए या आपको यह त्रुटि मिल सकती है:
Msg 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';
यह एक पहले से निर्मित फ़ंक्शन का उपयोग करने के लिए एक अच्छा सुझाव होगा, लेकिन इसके लिए एक और तरीका है:
उपयोग करने के पीछे लाभ sp_rename
यह है कि इससे जुड़े सभी संबंधों का ध्यान रखा जाता है।
से प्रलेखन :
जब भी कोई PRIMARY KEY या UNIQUE बाधा का नाम बदल दिया जाता है, तो sp_rename स्वचालित रूप से संबंधित सूचकांक का नाम बदल देता है। यदि एक नामांकित सूचकांक एक PRIMARY KEY बाधा से बंधा होता है, तो PRIMARY KEY बाधा भी स्वतः ही sp_rename द्वारा बदल दिया जाता है। sp_rename का उपयोग प्राथमिक और द्वितीयक XML इंडेक्स का नाम बदलने के लिए किया जा सकता है।
आप sp_rename
किसी स्तंभ का नाम बदलने के लिए उपयोग कर सकते हैं ।
USE YourDatabase;
GO
EXEC sp_rename 'TableName.OldColumnName', 'NewColumnName', 'COLUMN';
GO
पहले पैरामीटर वस्तु संशोधित किया जा रहा है, दूसरा पैरामीटर नया नाम उस वस्तु को दिया जाएगा है, और तीसरा पैरामीटर स्तंभ सूचित सर्वर है कि नाम परिवर्तन के लिए है column
, और यह भी नाम बदलने के लिए इस्तेमाल किया जा सकता tables
, index
और alias data type
।
चूंकि मैं अक्सर यहां आता हूं और फिर सोचता हूं कि कैसे कोष्ठक का उपयोग किया जाए, यह उत्तर मेरे जैसे लोगों के लिए उपयोगी हो सकता है।
EXEC sp_rename '[DB].[dbo].[Tablename].OldColumnName', 'NewColumnName', 'COLUMN';
OldColumnName
में नहीं होना चाहिए []
। यह काम नहीं करेगा।NewColumnName
में []
, इसे में परिणाम होगा [[NewColumnName]]
।Sql सर्वर प्रबंधन स्टूडियो ने कुछ सिस्टम को संग्रहीत कार्यविधियों (SP) को परिभाषित किया है
, जिनमें से एक का उपयोग एक स्तंभ का नाम बदलने के लिए किया जाता है। SP sp_rename है
सिंटैक्स: sp_rename '[table_name] .old_column_name', 'new_column_name'
इस लेख को आगे मदद के लिए: Microsoft डॉक्स द्वारा sp_rename
नोट: इस एसपी के निष्पादन पर एसक्यूएल सर्वर आपको सावधानी का संदेश देगा, ' सावधानी: किसी वस्तु के नाम के किसी भी भाग को बदलने से स्क्रिप्ट और संग्रहीत कार्यविधियाँ टूट सकती हैं '। यह केवल तभी महत्वपूर्ण है जब आपने अपना स्वयं का लिखा हो जिसमें कॉलम शामिल हो। तालिका में आप बदलने वाले हैं।
@ तहर का बेहतर संस्करण
DECLARE @SchemaName AS VARCHAR(128)
DECLARE @TableName AS VARCHAR(128)
DECLARE @OldColumnName AS VARCHAR(128)
DECLARE @NewColumnName AS VARCHAR(128)
DECLARE @ParamValue AS VARCHAR(1000)
SET @SchemaName = 'dbo'
SET @TableName = 'tableName'
SET @OldColumnName = 'OldColumnName'
SET @NewColumnName = 'NewColumnName'
SET @ParamValue = @SchemaName + '.' + @TableName + '.' + @OldColumnName
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
)
BEGIN
EXEC sp_rename @ParamValue, @NewColumnName, 'COLUMN';
END
रन क्वेरी:
SP_RENAME '[TableName].[ColumnName]','NewNameForColumn'