it-swarm.asia

إعادة تسمية العمود SQL Server 2008

أنا أستخدم SQL Server 2008 و Navicat. أحتاج إلى إعادة تسمية عمود في جدول باستخدام SQL.

ALTER TABLE table_name RENAME COLUMN old_name to new_name;

هذا البيان لا يعمل.

563
Serhio g. Lazin

استخدم sp_rename

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

راجع: مزود خدمة - كيفية إعادة تسمية اسم العمود أو اسم الجدول

الوثائق: sp_rename (Transact-SQL)

لقضيتك سيكون:

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

تذكر استخدام علامات الاقتباس المفردة لإحاطة قيمك.

1041
Habib

بدلاً من SQL ، يمكنك القيام بذلك في Microsoft SQL Server Management Studio. فيما يلي بعض الطرق السريعة لاستخدام واجهة المستخدم الرسومية:

الطريقة الأولى

بطء انقر نقرا مزدوجا فوق العمود. سيصبح اسم العمود مربع نص قابل للتحرير.


الطريق الثاني

انقر بزر الماوس الأيمن فوق العمود واختر "إعادة تسمية" من قائمة السياق.

فمثلا:

To Rename column name


الطريق الثالث

هذه الطريقة هي الأفضل عندما تحتاج إلى إعادة تسمية أعمدة متعددة دفعة واحدة.

  1. انقر بزر الماوس الأيمن فوق الجدول الذي يحتوي على العمود الذي يحتاج إلى إعادة تسمية.
  2. انقر التصميم .
  3. في لوحة تصميم الجدول ، انقر فوق مربع النص الخاص باسم العمود الذي تريد تغييره وقم بتحريره.

فمثلا: MSSMS Table Design Example

ملاحظة: أعرف أن OP طلب على وجه التحديد لحل SQL ، وأعتقد أن هذا قد يساعد الآخرين :)

91
Carrie Kendall

محاولة:

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

يجب عليك أيضًا تحديد مخطط الجدول أو قد تحصل على هذا الخطأ:

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';
18
Taher

سيكون اقتراحًا جيدًا استخدام دالة مضمنة بالفعل ، ولكن هناك طريقة أخرى لاستخدامها وهي:

  1. قم بإنشاء عمود جديد بنفس نوع البيانات و NEW NAME.
  2. قم بتشغيل عبارة UPDATE/INSERT لنسخ جميع البيانات في عمود جديد.
  3. إسقاط العمود القديم.

الفائدة من استخدام sp_rename هي أنها تهتم بجميع العلاقات المرتبطة به.

من الوثائق :

تقوم sp_rename تلقائيًا بإعادة تسمية الفهرس المرتبط كلما تمت إعادة تسمية قيد PRIMARY KEY أو UNIQUE. إذا كان الفهرس المعاد تسميته مرتبطًا بقيود PRIMARY KEY ، فسيتم أيضًا إعادة تسمية القيد PRIMARY KEY تلقائيًا بواسطة sp_rename. يمكن استخدام sp_rename لإعادة تسمية فهارس XML الأساسية والثانوية.

16
NeverHopeless

يمكنك استخدام sp_rename لإعادة تسمية عمود.

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

المعلمة الأولى هي الكائن المراد تعديله ، والمعلمة الثانية هي الاسم الجديد الذي سيُعطى للكائن ، والمعلمة الثالثةعمودتبلغ الخادم بأن إعادة التسمية لـ column ، و يمكن أيضًا استخدامه لإعادة تسمية tables و index و alias data type.

14
Alexandre Neukirchen

نظرًا لأنني غالباً ما أتيت إلى هنا ثم أتساءل عن كيفية استخدام الأقواس ، قد تكون هذه الإجابة مفيدة لأولئك مثلي.

EXEC sp_rename '[DB].[dbo].[Tablename].OldColumnName', 'NewColumnName', 'COLUMN'; 
  • يجب ألا يكون OldColumnName في []. لن يعمل.
  • لا تضع NewColumnName في [] ، فسيؤدي ذلك إلى [[NewColumnName]].
11
HonzaB

يحتوي Sql Server management studio على بعض الإجراءات المخزنة في النظام (SP)
أحدها يستخدم لإعادة تسمية عمود. SP هو sp_rename

بناء الجملة:sp_rename '[table_name] .old_column_name' ، 'new_column_name'
للحصول على مزيد من المساعدة ، راجع هذه المقالة: sp_rename بواسطة Microsoft Docs

ملاحظة:عند تنفيذ هذا SP سوف يعطيك خادم sql رسالة تحذير باسم 'تحذير: تغيير أي جزء من اسم الكائن قد ينقطع البرامج النصية والإجراءات المخزنة '. هذا أمر بالغ الأهمية فقط إذا كنت قد كتبت sp الخاصة بك والتي تتضمن العمود في الجدول الذي أنت على وشك تغييره.

3
Tahir77667

نسخة محسنة من طاهر

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
2
Rikin Patel

أو يمكنك فقط النقر مرتين على العمود الموجود في SQL Management Studio وإعادة تسميته عبر واجهة المستخدم ...

0
Dave Cole