ฉันใช้ 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 Server - วิธีเปลี่ยนชื่อคอลัมน์หรือชื่อตาราง
เอกสารประกอบ: 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 Server Studio จัดการ ต่อไปนี้คือวิธีใช้ GUI อย่างรวดเร็ว:
ช้าดับเบิลคลิกที่คอลัมน์ ชื่อคอลัมน์จะกลายเป็นกล่องข้อความที่แก้ไขได้
คลิกขวาที่คอลัมน์และเลือกเปลี่ยนชื่อจากเมนูบริบท
ตัวอย่างเช่น:
วิธีนี้จะดีกว่าเมื่อคุณต้องการเปลี่ยนชื่อหลายคอลัมน์ในครั้งเดียว
ตัวอย่างเช่น:
หมายเหตุ:ฉันรู้ว่า OP ขอวิธีแก้ปัญหา SQL โดยเฉพาะคิดว่าอาจช่วยคนอื่นได้ :)
ลอง:
EXEC sp_rename 'TableName.OldName', 'NewName', 'COLUMN'
คุณควรระบุสคีมาของตารางหรือคุณอาจได้รับข้อผิดพลาดนี้:
ข่าวสารเกี่ยวกับ 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
คือการดูแลความสัมพันธ์ทั้งหมดที่เกี่ยวข้อง
จากเอกสาร :
sp_rename เปลี่ยนชื่อดัชนีที่เกี่ยวข้องโดยอัตโนมัติทุกครั้งที่มีการเปลี่ยนชื่อคีย์หลักหรือข้อ จำกัด UNIQUE หากดัชนีที่ถูกเปลี่ยนชื่อนั้นเชื่อมโยงกับข้อ จำกัด ของคีย์หลักข้อ จำกัด ของคีย์หลักจะถูกเปลี่ยนชื่อโดยอัตโนมัติด้วย 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 Server มีระบบที่กำหนดไว้บางขั้นตอนการจัดเก็บ (SP)
หนึ่งในนั้นถูกใช้เพื่อเปลี่ยนชื่อคอลัมน์ SP คือsp_rename
ไวยากรณ์: sp_rename '[table_name] .old_column_name', 'new_column_name'
สำหรับความช่วยเหลือเพิ่มเติมอ้างอิงบทความนี้: sp_rename โดย Microsoft Docs
หมายเหตุ:ในการประมวลผล SP นี้เซิร์ฟเวอร์ sql จะให้ข้อความเตือนเป็น 'ข้อควรระวัง: การเปลี่ยนส่วนใด ๆ ของชื่อวัตถุอาจทำให้สคริปต์และขั้นตอนการจัดเก็บเสียหาย' นี่เป็นสิ่งสำคัญเฉพาะเมื่อคุณเขียน sp ของคุณเองซึ่งเกี่ยวข้องกับคอลัมน์ ในตารางที่คุณกำลังจะเปลี่ยน
รุ่นที่ได้รับการปรับปรุงของ @Taher
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
หรือคุณสามารถคลิกช้าสองครั้งที่คอลัมน์ใน SQL Management Studio และเปลี่ยนชื่อมันผ่าน UI ...
เรียกใช้แบบสอบถาม:
SP_RENAME '[TableName].[ColumnName]','NewNameForColumn'