首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server sp_rename 修改資料表欄位名稱完整指南

     編輯:關於SqlServer

基本語法

sp_rename 
    [ @objname = ] 'object_name' ,  -- 格式: schema.table.column 或 table.column
    [ @newname = ] 'new_name' ,     -- 僅新欄位名稱,不要加前綴
    [ @objtype = ] 'COLUMN'         -- 明確指定為欄位

執行範例

USE Test;

-- 方法 1: 直接執行
sp_rename 'd_s_t.avg_grade', 'avg_g', 'COLUMN';

-- 方法 2: 使用 EXEC (結果相同)
EXEC sp_rename 'd_s_t.avg_grade', 'avg_g', 'COLUMN';

關鍵注意事項

項目正確做法錯誤做法
@newname 格式'avg_g' (單純名稱)'d_s_t.avg_g' (會建立名為 "d_s_t.avg_g" 的欄位)
@objname 格式'schema.table.column' 或 'table.column'僅 'column' (不明確)
執行後警告「注意: 變更物件名稱的任何部分都可能會破壞指令碼和預存程序」
→ 正常提醒,無需理會
以為失敗而中止

完整參數說明

參數資料型別預設值說明
@objnamenvarchar(776)無目前物件名稱。欄位格式: table.column 或 schema.table.column
@newnamesysname無新名稱,單一識別碼,遵循命名規則
@objtypevarchar(13)NULL物件類型: COLUMN, DATABASE, INDEX, OBJECT, USERDATATYPE

回傳碼

  • 0 = 成功
  • 非零 = 失敗

批量重命名腳本範例

-- 將所有表的 CreateDate 重命名為 CreatedAt
DECLARE @sql NVARCHAR(MAX) = N'';
SELECT @sql += 'EXEC sp_rename ''' + 
    QUOTENAME(SCHEMA_NAME(o.schema_id)) + '.' + QUOTENAME(o.name) + '.CreateDate'', ''CreatedAt'', ''COLUMN'';' + CHAR(13)
FROM sys.objects o
JOIN sys.columns c ON o.object_id = c.object_id
WHERE o.type = 'U' AND c.name = 'CreateDate';

PRINT @sql;
-- EXEC sp_executesql @sql;  -- 確認後執行

相依物件檢查 (重命名前必做)


-- 查詢引用此欄位的檢視、預存程序、函數、觸發器
SELECT DISTINCT 
    o.name AS ObjectName,
    o.type_desc AS ObjectType,
    m.definition
FROM sys.sql_modules m
JOIN sys.objects o ON m.object_id = o.object_id
WHERE m.definition LIKE '%avg_grade%'  -- 舊欄位名
  AND o.type IN ('V','P','FN','IF','TF','TR');
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved