SQLServer Alter 修改表的列名的解決


 


 
解決:
在SQLServer中修改表的列名,能夠調用存儲過程sp_rename。
 
[sql]
use Test;--使用數據庫 
sp_rename 'd_s_t.avg_grade','avg_g','column'; 
--d_s_t是表名,avg_grade是原來的列名,avg_g是新的列名 
--也能夠這樣執行:  www.2cto.com   
-- exec sp_rename 'd_s_t.avg_grade','avg_g','column'; 
 
注意:
1.  avg_g前面不要有表名,不然,更改後的列名爲d_s_t. avg_g。
2.  更改爲功後會有這樣一個警告:「注意: 更改對象名的任一部分均可能會破壞腳本和存儲過程」。不用理會,這是正常的。
 
附上參考資料:
 
sp_rename
更改當前數據庫中用戶建立對象(如表、列或用戶定義數據類型)的名稱。
 
語法
sp_rename [ @objname = ] 'object_name' ,
  [ @newname = ] 'new_name'
  [ , [ @objtype = ] 'object_type' ]
 
參數
[@objname =] 'object_name'
 
是用戶對象(表、視圖、列、存儲過程、觸發器、默認值、數據庫、對象或規則)或數據類型的當前名稱。若是要重命名的對象是表中的一列,那麼 object_name必須爲 table.column 形式。若是要重命名的是索引,那麼 object_name必須爲 table.index 形式。object_name爲 nvarchar(776) 類型,無默認值。
 
[@newname =] 'new_name'
 
是指定對象的新名稱。new_name必須是名稱的一部分,而且要遵循標識符的規則。newname 是 sysname類型,無默認值。  www.2cto.com 
 
[@objtype =] 'object_type'
 
是要重命名的對象的類型。object_type爲 varchar(13) 類型,其默認值爲 NULL,可取下列值。
 
值描述
COLUMN 要重命名的列。
DATABASE 用戶定義的數據庫。要重命名數據庫時需用此選項。
INDEX 用戶定義的索引。
OBJECT 在 sysobjects中跟蹤的類型的項目。例如,OBJECT 可用來重命名約束(CHECK、FOREIGN KEY、PRIMARY/UNIQUE KEY)、用戶表、視圖、存儲過程、觸發器和規則等對象。
USERDATATYPE 經過執行 sp_addtype 而添加的用戶定義數據類型。
 
返回代碼值
0(成功)或非零數字(失敗)
 
註釋
只能更改當前數據庫中的對象名稱或數據類型名稱。大多數系統數據類型和系統對象的名稱不能更改。
 
重命名視圖時,sysobjects表中有關該視圖的信息將獲得更新。重命名存儲過程時,sysobjects 表中有關該過程的信息將獲得更新。
 
每當重命名 PRIMARY KEY或 UNIQUE 約束時,sp_rename都會自動爲相關聯的索引重命名。若是重命名的索引與 PRIMARY KEY 約束相關聯,那麼 sp_rename 也會自動重命名主鍵。
 
重要重命名存儲過程和視圖後,請清空過程高速緩存以確保全部相關的存儲過程和視圖都從新編譯。
 
因爲存儲過程和視圖都不存儲數據,因此這兩種對象都可快速刪除和重建。重命名文本對象時,要得到最佳結果,應刪除並使用其新名稱從新建立對象。
 
權限
sysadmin 固定服務器角色成員、db_owner 和 db_ddladmin固定數據庫角色成員或對象全部者能夠執行 sp_rename。只有 sysadmin和 dbcreator 固定服務器角色成員才能將"database"做爲 object_type來執行 sp_rename。  www.2cto.com 
 
示例
A. 重命名錶
下例將表 customers 重命名爲 custs。
 
EXEC sp_rename 'customers', 'custs'
 
B. 重命名列
下例將表 customers 中的列 contact title 重命名爲 title。
 
EXEC sp_rename 'customers.[contact title]', 'title', 'COLUMN'sql

相關文章
相關標籤/搜索